Я пытаюсь создать метод фильтра для списка объектов Entity и лучше понять Expression<Func<...
У меня есть тестовая функция, подобная этой.
public IQueryable<T> Filter<T>(IEnumerable<T> src, Expression<Func<T, bool>> pred)
{
return src.AsQueryable().Where(pred);
}
и если я это сделаю:
context.Table.Filter(e => e.ID < 500);
или это:
context.Table.Filter(e => e.SubTable.Where(et => et.ID < 500).Count() > 0 && e.ID < 500);
все работает хорошо.
Но если я это сделаю:
context.Table.Filter(e => e.SubTable.Filter(et => et.ID < 500).Count() > 0 && e.ID < 500);
или это:
context.Table.Where(e => e.SubTable.Filter(et => et.ID < 500).Count() > 0 && e.ID < 500);
Я получаю одну ошибку. LINQ to Entities does not recognize the method ...Filter...
Почему он работает в одном случае, а не в сумматоре? Что я должен изменить в фильтре, чтобы он работал со связанными таблицами. Я предпочитаю держаться подальше от другой внешней библиотеки, поскольку я хочу узнать, как она работает, и быть в состоянии использовать ее в любом сценарии в будущем.
В первых двух случаях фильтр работает в базе данных правильно.