Мне интересно, как передать свойство объекта динамически как часть лямбда, которая будет использоваться в методе Where
от IQueryable
.Динамическая лямбда для метода Where in linq
Предположим, у меня есть этот код:
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);
...
Мои кишки скажите мне, что мне придется использовать класс Expressions для вызова метода Contains
строки, возвращаемой expr
, но не уверен, как это сделать, поскольку я не очень fami лжец с этим ...
во время выполнения вы выбираете то, что свойство передать метод? – terrybozzio
Метод будет использоваться в разных местах, с разными объектами и различными свойствами. Задача состоит в том, чтобы сделать этот метод как можно более общим. – Vlad
вы можете использовать [Reflection] (http://msdn.microsoft.com/en-us/library/ms173183.aspx), чтобы получить нужную вам собственность. – Caleb