【发布时间】:2014-05-19 18:17:42
【问题描述】:
我正在使用动态 Linq 进行通用搜索。 我有 ID 列表:
List<int> idList = new List<int> { 1, 5, 6};
在普通的 Linq 中,我会写:
q = q.Where(a => idList.Contains(a.MyId));
但现在我必须使用System.Linq.Dynamic,因为我事先不知道该列的名称。
string someId = "CustomId";
q = q.Where("@0"+ ".Contains(" + someId + ")", idList.ToArray());
但这会产生错误:
“'Int32' 类型中不存在适用的方法 'Contains'”
我怎样才能做到这一点?
是否有一些扩展库为 dynamic Linq 或其他方式实现 Contains。
【问题讨论】:
-
使用表达式树。
-
表达式树是下面接受的答案中描述的解决方案。 @pil0t 问题可能是重复的,但答案不是。唯一给定的解决方案需要对库进行更改,而在这里我得到了如何使用 Expression 轻松扩展它的答案。
标签: c# linq dynamic arraylist contains