我有一个名为DataTable
的{{1}}。它有两个名为dt
和atype_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
。
答案 0 :(得分:1)
既然你说过你
需要根据特定的atype_code
查询模块
,我假设您只需要一个module
与atype_code
。{/ p>
然后您应该使用Single
/ SingleOrDefault
或First
/ 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