Ошибка преобразования из типа 'System.Linq.IQueryable <ClassX>' в 'ClassX' - PullRequest
1 голос
/ 30 марта 2012

У меня есть запрос Linq, который возвращает объект типа IQueryable<ClassX>.Я хочу поместить этот объект в объект типа класса ClassX и получить ошибку:

Невозможно неявно преобразовать тип 'System.Linq.IQueryable<ClassX>' в 'ClassX'.Существует явное преобразование (вам не хватает приведения?)

Вот что я пытаюсь сделать:
GetResult() возвращает объект IQueryable<ClassX>.

ClassX x = GetResult();

Я пробовал кастовать, например ClassX x = (ClassX)(GetResult()); - но это не сработало.

Ответы [ 3 ]

4 голосов
/ 30 марта 2012

Как вы, вероятно, знаете, ваш запрос LINQ возвращает IQueryable<ClassX>.Это представляет запрос с набором результатов.Он не представляет объект в самом результате, поэтому вы не можете просто привести его таким образом.

Если ваш метод вернет ровно один ClassX объект, вы можете использовать .Single(), чтобы получить егообъект из набора результатов:

ClassX x = GetResult().Single();

или .SingleOrDefault(), если набор результатов может быть пустым:

ClassX x = GetResult().SingleOrDefault();
2 голосов
/ 30 марта 2012

IQueryable - это «коллекция» объектов, поэтому, чтобы назначить «тип элемента элемента в коллекции», нужно выбрать один элемент.

В зависимости от того, что вам нужно First, Skip , FirstOrDefault позволит вам выбрать элемент из IQueryable / IEnumerable:

ClassX x = GetResult().FirstOrDefault();
0 голосов
/ 30 марта 2012
var temp = GetResult().AsEnumerable().SingleOrDefault();
...