Этот код генерирует исключение:
var query = services
.SomeQuery(bar).select(x => (Foo)x)
.Where(x.PropertyOfFoo == FooState.SomeState);
var result = query.ToList();
Исключение:
Unable to cast the type...
LINQ to Entities only supports casting EDM primitive or enumeration types.
Этот код работает:
var query = services
.SomeQuery(bar).select(x => x as Foo)
.Where(x.PropertyOfFoo == FooState.SomeState);
var result = query.ToList();
Почему as
разрешить преобразование и cast
нет?
Я понимаю, что as
будет возвращать значение null, а cast будет генерировать исключение, если любой из вызовов завершится с ошибкой. Хорошо. Но когда я запускаю этот код:
var query = services
.SomeQuery(bar);
var result = query.ToList();
Я получаю гораздо больший результат запроса. Почему?