Я играл с linq своим параметром Func
(на основе сущности). Потом я узнал, что такое поведениеМножественные параметры func для LINQ - EF
var idMatchQuery = new Func<MyClass, bool>(x => x.Id == someId);
var statusMatchQuery = new Func<MyClass, bool>(x => x.Status == someStatus);
/// works
var a = myClassEntity.FirstOrDefault(idMatchQuery);
/// doesn't work
var b = myClassEntity.FirstOrDefault(p => idMatchQuery(p) && statusMatchQuery(p));
/// doesn't work
var c = myClassEntity.FirstOrDefault(p => idMatchQuery(p) && p.Status == 1);
Он бросает UnsupportedOperationException
с EF
не распознает эти запросы. Я мог бы принять это намного легче, если бы ни одно из вышеперечисленных не работало. Но это меня беспокоит, когда оно работает с одним и только одним запросом Func
, но не с комбинациями с другими запросами.
Я уверен, что для этого есть объяснение, но я думаю, что мои поисковые термины были слишком наивны для ответа, который я ищу.
Какое объяснение этому поведение?
ли первая версия «работает», является спорным, так как он решает 'Enumerable.FirstOrDefault' вызова, а не' Queryable', так что это приведет всю таблицу в памяти перед применением FUNC, который я думаю, это не то, что вы ожидаете. –
хорошо, если это случай, я сейчас даже не чувствую себя хорошо. –