使用DataTable的一个查询,然后应用过滤器

时间:2019-02-13 20:07:24

标签: c# .net linq datatable

我有两个查询foreach子句的人,这些子句使用过滤器从数据表中返回数据:

 foreach (var currentDesignItem in designItemList.Select($"[Design Name] = '{designName}' AND [Project Number] = {legacyKey}  AND [DesignTypeName] <> 'Change Order'"))

 foreach (var item in designItemList.Select($"[Design Name] = '{designName}' AND [Project Number] = {legacyKey} AND [DesignTypeName] = 'Change Order'"))

如您所见,它是相同的查询,但有一个不同的过滤器AND [DesignTypeName] = 'Change Order'.

所以我不想两次查询,我尝试

 DataRow[] dtList = designItemList.Select($"[Design Name] = '{designName}' AND [Project Number] = {legacyKey}");

然后尝试以以下方式过滤foreach:

foreach (var currentDesignItem in dtList.Select("[DesignTypeName] <> 'Change Order'"))

但是我遇到一个错误:

  

方法'Enumerable.Select(IEnumerable,Func)'的类型参数不能为   从用法推断。尝试指定类型参数   明确地。

1 个答案:

答案 0 :(得分:1)

您的dtList.Select(...)是对DataRow[]的{​​{3}}(目前不是DataTable),因此您使用类似

var filtered = dr.Select(r => r["DesignTypeName"].ToString() != "Change Order");

编辑

显然,以上内容应使用.Where而不是.Select