我有两个查询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)'的类型参数不能为 从用法推断。尝试指定类型参数 明确地。
答案 0 :(得分:1)
您的dtList.Select(...)
是对DataRow[]
的{{3}}(目前不是DataTable
),因此您使用类似
var filtered = dr.Select(r => r["DesignTypeName"].ToString() != "Change Order");
编辑
显然,以上内容应使用.Where
而不是.Select
。