Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DataTable的一个查询,然后应用筛选器_C#_.net_Linq_Datatable - Fatal编程技术网

C# 使用DataTable的一个查询,然后应用筛选器

C# 使用DataTable的一个查询,然后应用筛选器,c#,.net,linq,datatable,C#,.net,Linq,Datatable,我对foreach子句进行了两次查询,它们使用过滤器从datatable返回数据: foreach (var currentDesignItem in designItemList.Select($"[Design Name] = '{designName}' AND [Project Number] = {legacyKey} AND [DesignTypeName] <> 'Change Order'")) 正如您所看到的,它是相同的查询,但有一个不同的过滤器和[Desig

我对foreach子句进行了两次查询,它们使用过滤器从datatable返回数据:

 foreach (var currentDesignItem in designItemList.Select($"[Design Name] = '{designName}' AND [Project Number] = {legacyKey}  AND [DesignTypeName] <> 'Change Order'"))
正如您所看到的,它是相同的查询,但有一个不同的过滤器
和[DesignTypeName]=“变更单”。

所以我不想做两次查询,我试着

 DataRow[] dtList = designItemList.Select($"[Design Name] = '{designName}' AND [Project Number] = {legacyKey}");
然后尝试在foreach中筛选为:

foreach (var currentDesignItem in dtList.Select("[DesignTypeName] <> 'Change Order'"))
foreach(dtList中的var currentDesignItem。选择(“[DesignTypeName]‘变更单’”)
但我有一个错误:

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

您的
dtList.Select(…)
是针对
DataRow[]
(此时不是
DataTable
)的,因此您可以使用

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


上面应该使用
。Where
而不是
。显然,选择

设计项目列表。选择
是一种
数据表
方法,
dtList。选择
是一种完全不同的方法:
可枚举。Where
。如果我现在这样做,我如何访问列,在此之后,我有如下内容:
var designItemName=currentDesignItem[“designItemName”]作为字符串,但现在如何访问?因为我遇到了一个错误:无法将带[]的索引应用于“bool”类型的表达式。请参见答案中的编辑。
其中
是过滤器,
选择
是投影。很抱歉。
var filtered = dr.Select(r => r["DesignTypeName"].ToString() != "Change Order");