1
我想知道如何动态地传递一个对象的属性作为将在Where
方法IQueryable
中使用的lambda的一部分。linq的Where方法的动态lambda
假设我有这样的代码:
var list = new List<Item>();
...
var filtered = list.AsQueryable().Where(x => x.SomePropertyA.Contains(someStringValue));
我的任务就是让最后一条语句作为一种通用的方法和使用参数:
IQueryable<Item> SomeMethod(Expression<Func<Item, string>> expr, string stringValue) {
return list.AsQueryable().Where (???);
}
SomeMethod(x => x.SomePropertyA, someStringValue);
SomeMethod(x => x.SomePropertyB, someStringValue);
...
我的胆量告诉我,我将不得不使用表达式类来调用由expr
返回的字符串的Contains
方法,但不知道如何做到这一点,因为我不是很famic骗子用这种...
在运行时你选择什么属性来传递方法? – terrybozzio
该方法将用于多个地方,具有不同的对象和不同的属性。其任务是尽可能使方法尽可能通用。 – Vlad
您可以使用[Reflection](http://msdn.microsoft.com/zh-cn/library/ms173183.aspx)获取您想要的属性 – Caleb