You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:41:03