如何在C# LINQ中获取DataTable的单列值?
使用LINQ从DataTable获取单列值的解决方案
原代码问题分析
你提供的代码中,CopyToDataTable().ToString()的写法存在错误——CopyToDataTable()会生成一个新的DataTable,调用它的ToString()只会返回类型名称,无法拿到实际的列值。下面针对不同业务场景给出正确实现:
场景1:获取单个匹配的列值(RuleID唯一)
如果RuleID是唯一标识,确保只会返回一个匹配结果,可使用FirstOrDefault()获取单个值(无匹配时返回null):
DataTable Master_Table = Execute_Manager.getTableDataSet(connection, select_query, master_table); string RuleName = Master_Table.AsEnumerable() .Where(row => row.Field<string>("RuleID") == "123456") .Select(row => row.Field<string>("RuleName")) .FirstOrDefault();
若业务逻辑确保一定有匹配项,可替换FirstOrDefault()为First(),但无匹配时会抛出InvalidOperationException,按需选择。
场景2:获取所有匹配的列值列表
如果存在多个符合条件的行,需要获取整列的所有值,可使用ToList()生成字符串列表:
DataTable Master_Table = Execute_Manager.getTableDataSet(connection, select_query, master_table); List<string> RuleNames = Master_Table.AsEnumerable() .Where(row => row.Field<string>("RuleID") == "123456") .Select(row => row.Field<string>("RuleName")) .ToList();
必要前提
确保项目已引用以下命名空间,否则AsEnumerable()和Field<T>()扩展方法无法正常使用:
using System.Linq; using System.Data.DataSetExtensions;
内容的提问来源于stack exchange,提问作者vignesh waran
相关产品推荐
相关产品推荐

