如何通过动态 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)
见鬼去吧!
我尝试了所有已知的变体来使用 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)