DataTable中的LINQ查询

时间:2012-06-27 10:08:17

标签: asp.net linq datatable

我有一个名为DataTable的{​​{1}}。它有两个名为dtatype_code的列。 现在我需要根据特定的module查询模块。

这是我写的代码,但没有用。

atype_code

DataTable dt = GetATypeCodeList(); var accType = (from myAccType in dt.AsEnumerable() where myAccType.Field<string>("atype_code") == aTypeCode.Trim() select myAccType.Field<string>("module")); acctype

1 个答案:

答案 0 :(得分:1)

既然你说过你

  

需要根据特定的atype_code

查询模块

,我假设您只需要一个moduleatype_code。{/ p>

然后您应该使用Single / SingleOrDefaultFirst / FirstOrDefault

String firstModule = dt.AsEnumerable()
                       .Where(r => r.Field<string>("atype_code") == aTypeCode.Trim())
                       .Select(r => r.Field<string>("module"))
                       .FirstOrDefault();
// or
String singleModule = dt.AsEnumerable()
                       .Where(r => r.Field<string>("atype_code") == aTypeCode.Trim())
                       .Select(r => r.Field<string>("module"))
                       .SingleOrDefault();
如果有多个匹配元素,

Enumerable.Single会抛出异常。这对验证数据非常有用。

修改

这是查询语法:

IEnumerable<String> modules =  
    from myAccType in dt.AsEnumerable()
    where myAccType.Field<string>("atype_code") == aTypeCode.Trim()
    select myAccType.Field<string>("module");
String module = modules.FirstOrDefault(); // returns null if no matching modules were found