如何通过动态 linq 使用 array/list 进行过滤

how to filter with array/list via dynamic linq

见鬼去吧!

我尝试了所有已知的变体来使用 Contains 进行过滤,但到目前为止没有成功。

方法一

ret = ret.Where("CaseID.Contains(@0)", {15, 16, 17})

出现以下错误:

System.Linq.Dynamic.ParseException: 'No applicable method 'Contains' exists in type 'Int32?''

方法#2

ret.Where("@0.Contains(outerIt.CaseID)", {15, 16, 17})

报错如下:

System.Linq.Dynamic.ParseException: 'No 'it' is in scope'

那么,如何按列表或数组进行筛选?

我正在使用 nuget 1.0.7 中最新的 System.Linq.Dynamic 库

不太确定我是否理解你的问题。 但是你的意思是这样的吗? 这是用 Lambda 表达式解决的。

var listA = new[] {1, 2, 3, 5, 8};
var listB = new[] {1, 3, 5, 7, 11};
var res = listA.Where(itemA => listB.Contains(itemA));
// res = {1,3,5}

以下内容可行,但您必须确保 CaseID 和数组值具有相同的类型。

ret.Where("@0.Any(outerIt.CaseID=it)", array)