Не могу перечислить результаты LinQ с левым соединением - PullRequest
1 голос
/ 20 мая 2010
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 to Entities не распознает метод 'System.Collections.Generic.IEnumerable 1[SCEFramework.Models.fileStorage] DefaultIfEmpty[fileStorage](System.Collections.Generic.IEnumerable 1 [SCEFramework.Models.fileStorage])' метод, и этот метод не может быть переведено в магазинное выражение

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

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

1 Ответ

2 голосов
/ 20 мая 2010

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

from fileItem in objFile.DefaultIfEmpty()

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...