Не может перечислить результаты LinQ с левым соединением

var itemSet = from item in da.GetList<Models.account>()
                           join file in objFileStorageList
                           on item.account_id equals file.parent_id into objFile
                           from fileItem in objFile.DefaultIfEmpty()
                           where item.company != null && item.company.company_id == 123
                           orderby item.updatedDate descending
                           select
                           new
                           {
                               Id = item.account_id,
                               RefNo = item.refNo,
                               StartDate = item.StartDate ,
                               EndDate = item.EndDate ,
                               Comment = item.comment,
                               FileStorageID = fileItem != null ? fileItem.fileStorage_id : -1,
                               Identification = fileItem != null ? fileItem.identifier : null,
                               fileName = fileItem != null ? fileItem.file_nm : null
                           };

Это повышает сообщение об ошибке, когда я пытаюсь перечислить посредством результата набора запроса Linq выше.

LINQ к Объектам не распознает метод 'Система. Наборы. Универсальный. IEnumerable1[SCEFramework.Models.fileStorage] DefaultIfEmpty[fileStorage](System.Collections.Generic.IEnumerable1 [SCEFramework. Models.fileStorage])', метод и этот метод не могут быть переведены в выражение хранилища

foreach (var item in itemSet)
        {
            string itemRef=  item.RefNo;    
        }

Предложите меня любые решения.Заранее спасибо.

1
задан nvtthang 20 May 2010 в 02:32
поделиться

1 ответ

Я думаю, что проблема заключается в следующем предложении from:

from fileItem in objFile.DefaultIfEmpty()

Обратите внимание, что ваш запрос LINQ может быть выполнен только во время выполнения сбора результатов. Итак, хотя вы думаете, что ваше исключение находится в foreach, на самом деле оно находится в вашем выражении. Это не работает, потому что возможное нулевое значение objFile.DefaultIfEmpty () не может быть преобразовано в IEnumerable .

Попробуйте удалить вызов DefaultIfEmpty и посмотрите, что произойдет.

2
ответ дан 3 September 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: