Я пытаюсь построить построитель предикатов, который возвращает предикат, который проверяет, содержит ли список ints другой список int. До сих пор у меня есть этоСоздайте построитель предикатов для (x => listOfInts.Contains (x.ListOfIntsToCheck))
public static Expression<Func<T, bool>> DynamicIntContains<T, TProperty>(string property, IEnumerable<TProperty> items)
{
var pe = Expression.Parameter(typeof(T));
var me = Expression.Property(pe, property);
var ce = Expression.Constant(items);
var call = Expression.Call(typeof(List<int>), typeof(List<int>).GetMethod("Contains").Name, new[] { typeof(int) }, ce, me);
return Expression.Lambda<Func<T, bool>>(call, pe);
}
T - объект поиска, который содержит список идентификаторов в качестве одного из его свойств. TProperty список Интс и имущества имя списка на ошибки property.The я получаю это
Additional information: No method 'Contains' exists on type 'System.Collections.Generic.List`1[System.Int32]'.
Является ли это потому, что я называю его из статического метода? Или я пытаюсь получить доступ к методу на typeof (List) некорректно? Благодарю.
Возможный дубликат [Как использовать LINQ Contains (string \ [\]) вместо Contains (string)] (http://stackoverflow.com/questions/194930/how-do-i-use-linq- containsstring-вместо-containsstring) – GSerg
Это вообще не связано с этим вопросом. – Dan
Как насчет этого, @Dan http://stackoverflow.com/questions/16347794/how-to-build-an-ienumerableint-contains-expression – Darek