Я пытаюсь реализовать фильтр общих элементов, используя Entity Framework, на основе выражения лямбда, указывающего мне поле id. Следующий код компилируется, но, конечно, не работает, так как EF не понимает общую функцию:Фильтрация IQueryable на основе динамического поля
public static IQueryable<T> Authorize<T>(this IQueryable<T> items, Func<T, Guid> idGetter) where T : class
{
return items.Where(i => idGetter(i) == new Guid("4A6FE5AF-AB63-4BB3-9D32-88766CF242CC"));
}
var result = context.Items.Authorize(i => i.Id);
Как сделать это с помощью EF? Как использовать дерево выражений, чтобы рассказать ему, какое поле сравнивать? Как использовать общее имя в запросе, который может обрабатываться Entity Framework?
Благодарим за предложение - на самом деле я уже использую эту реализацию как перегрузку. Но я хочу иметь возможность использовать поля, отличные от указанных в интерфейсе. – user1039407
Возможно, размышление может вам помочь. «Украсьте» свои поля id одним атрибутом, а затем используйте отражение в методе 'Authorize', чтобы получить их. –