C# Dynamic LINQ Contains 使用数组只计算第一个值

C# Dynamic LINQ Contains using an array only evaluates the first value

对 C# 比较陌生,开始使用 Dynamic LINQ 使用字符串过滤数据 table 适配器。我遇到的问题是 Where 子句似乎只评估字符串中的第一个值和其他的 none。这是我正在使用的代码。

        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 类型。这可能吗?

提前致谢

就用这个吧。它将正常工作。

string[] ids = new string[] { "12345", "67891", "45878" };

var resultQ = (from pr in table1 select pr).AsQueryable();

var iq = resultQ.Where(w => ids.Contains(w.Id)).ToList();

现在设法解决了这两点。将 string[] 设置为动态 LINQ 的字符串以获取列表中的所有值,如下面的编码

string ids =  "12345,67891,45878";
var resultQ = (from pr in table1 select pr).AsQueryable();
var iq = resultQ.Where("@0.Contains(FieldName)", ids); 

或使用 Syed 的建议并更改 LINQ 查询并保留数组(再次感谢 Seyed)

为了将 IQueryable 类型转换为 EnumerationRowCollection,我将 EnumerationRowCollection 更改为 IEnumerable,这适用于我所有的 LINQ 查询

谢谢