我有以下 linq 查询:
var file = (from p in database.tblFile
join o in database.tblFileVersion on p.fldFileID equals o.fldFileID
join t in database.tblFileAttachments on p.fldFileID equals t.fldFileID
where p.fldFileID == team.Key
where o.fldVersionNo == highestVersion
select new UserDashboardFile
{
Filename = p.fldFilename,
VersionNumber = o.fldVersionNo,
FileID = team.Key,
Type = GetFileType(t.fldTableName),
}).Single();
GetFileType 是一个返回枚举类型的方法。没有语法错误,但是当我运行该项目(它是一个 mvc 4 web 项目)时,我收到以下错误:
LINQ to Entities 无法识别该方法
'DCIS.Code.UserDashboardFileType GetFileType(System.String)' 方法,
并且此方法无法转换为存储表达式。
我想这个查询不能转换为 t-sql 查询,但我不知道如何更改我的查询以避免上述错误。提前致谢...
可以先选择匿名对象,然后构造UserDashboardFile
.
var file = (from p in database.tblFile
join o in database.tblFileVersion on p.fldFileID equals o.fldFileID
join t in database.tblFileAttachments on p.fldFileID equals t.fldFileID
where p.fldFileID == team.Key
where o.fldVersionNo == highestVersion
select new
{
Filename = p.fldFilename,
VersionNumber = o.fldVersionNo,
FileID = team.Key,
FldTableName = t.fldTableName
}).Single();
var udFile = new UserDashboardFile { ..., Type = GetFileType(file.FldTableName) };
您也可以致电.AsEnumerable()
在选择之前阻止GetFileType
需要翻译成sql。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)