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;
}
请建议我任何解决方案。 提前谢谢。
答案 0 :(得分:2)
我认为这个问题是以下'from'子句:
from fileItem in objFile.DefaultIfEmpty()
请注意,您的LINQ查询只能在执行结果集合时执行。因此,当你认为你的异常在foreach中时,它实际上在你的表达中。这会中断,因为objFile.DefaultIfEmpty()
的可能空值无法转换为IEnumerable
。
尝试删除DefaultIfEmpty
电话,看看会发生什么。