C#动态LINQ包含使用数组仅评估第一个值

问题描述

C#相对较新,并且开始使用Dynamic 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来查看是否有帮助,但结果还是一样(或者我没有正确使用它)。我知道我可能在这里缺少一些小东西,但是任何帮助将不胜感激。

另外要注意:我想将iQuery的最终结果(一种IQueryable类型)转换为EnumerationRowCollection类型。这可能吗?

预先感谢

解决方法

只需使用它。它将正常工作。

microservice
,

现在已经设法解决了这两点。可以将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查询

谢谢