[英]Is there any way to call a none LINQ method inside the select new part of an IQueryable object in entity framework?
[英]Call a method inside the select part of a LINQ query
我有以下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) };
你也可以在select之前調用.AsEnumerable()
來防止在sql中翻譯GetFileType
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.