【发布时间】:2021-01-19 23:02:57
【问题描述】:
C# 相对较新,并开始使用动态 LINQ 使用字符串过滤数据表适配器。我遇到的问题是 Where 子句似乎只评估字符串中的第一个值,而没有评估其他值。这是我正在使用的代码。
string[] ids = new string[] { "12345", "67891", "45878" };
var resultQ = (from pr in table1 select pr).AsQueryable();
var iq = resultQ.Where("@0.Contains(FieldName)", ids);
它只适用于第一个值“12345”,因此 iq 的输出显示“12345”的所有字段。我尝试使用 linq.dynamic.core 来查看是否会有所帮助,但结果仍然相同(或者我没有正确使用它)。我知道我可能在这里遗漏了一些小东西,但我们将不胜感激。
另外说明:我想将 iq 的最终结果(IQueryable 类型)转换为 EnumerationRowCollection 类型。这可能吗?
提前致谢
【问题讨论】:
-
什么是
pr和table1变量?请提供完全可重现的代码。 -
您好,table1 指的是表适配器(table1 = TableAdapter1.GetData();),pr 只是用于行的范围变量。这不是与动态 LINQ 包含语句没有获取数组中的所有值有关的问题。干杯
标签: c# linq iqueryable dynamic-linq