【发布时间】:2017-02-22 15:00:30
【问题描述】:
我正在尝试为 DataTable 创建一个动态查找过滤器。
代码目前看起来像这样,我正在循环遍历每一行/列。 (一张桌子喂另一张)
DataRow FoundRow=null;
foreach (string ID in IDToCheck)
{
FoundRow = IdTable.AsEnumerable().Where(row => row.Field<string>(ID).Equals(
RowInfo[ID].ToString(),StringComparison.InvariantCultureIgnoreCase)).First();
DoStuffWith(FoundRow);
}
我无法将row.Field<string>(ID) 转换为Expression.Call。
我正在尝试重现Microsoft 的示例。
【问题讨论】:
-
您为什么要这样做?你有什么问题?虽然可以简化为
IdTable.AsEnumerable().Where(row => IDToCheck.Contains(row.Field<string>(ID))) -
实际上问题并不清楚,但
IDToCheck实际上是Column name idtocheck。两个表都有几个共同的列名。我正在尝试将它们匹配在一起,如果在表中找不到第一个 ID,则查找第二个 ID 和另一个表的另一列。 (是给sedol,isin...) -
好的,但我还是看不出你当前的代码有什么问题?
-
我认为使用紧凑的 lambda 表达式 OR 会更快。我在想逐行而不是逐列会更快。
标签: c# linq reflection lambda expression