Я пытаюсь реализовать общий метод с предикатом. Я написал код:Получить элементы по методу предикатов
public ICollection<T> GetProductsByMatching<T>(Expression<Func<T, bool>> predicate)
{
return context.Products.Where(predicate).Include("ShopPlace, Images").ProjectTo<T>().ToList();
}
и использование этого метода:
var a = service.GetProductsByMatching<ProductInfo>(x => x.Name.StartsWith("value")
|| x.Price < 150);
Наконец я имею Invalid Operation Exception
: Нет общий метод 'Где от типа «System.Linq.Queryable» совместим с аргументы и аргументы поставляемого типа.
Что не так с моим кодом? Благодарим за продвижение!
Поскольку 'T' =' Product'. Что должен делать этот код? Вы хотите называть 'context.Set' вместо этого? –
CodeCaster
@CodeCaster получает продукты из базы данных по предикату и сопоставляет его с ProductInfo (класс ViewModel) – user3818229
Да, часть _that_ очевидна из кода, но я пытаюсь выяснить причину для ввода выражения 'Expression>' в первое место. В моем ответе я теперь сделал некоторые предположения, основанные на имени метода. –
CodeCaster