Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在LINQ查询的select部分内调用方法_C#_Entity Framework_Linq To Entities - Fatal编程技术网

C# 在LINQ查询的select部分内调用方法

C# 在LINQ查询的select部分内调用方法,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我有以下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 == te

我有以下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实体无法识别该方法 “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中翻译

谢谢,这是一个非常有用的答案:)