Entity framework 为什么我的Linqued查询没有得到执行

Entity framework 为什么我的Linqued查询没有得到执行,entity-framework,linq,c#-4.0,sql-to-linq-conversion,Entity Framework,Linq,C# 4.0,Sql To Linq Conversion,我有一个难以回答的问题 var moreThen1dayLeavefed = (from LApp in db.LeaveApplications join Emp in db.Employees on LApp.Employee equals Convert.ToInt32(Emp.EmployeeNumber)

我有一个难以回答的问题

  var moreThen1dayLeavefed = (from LApp in db.LeaveApplications
                                 join Emp in db.Employees
                                on LApp.Employee equals Convert.ToInt32(Emp.EmployeeNumber)
                                 join LBrk in db.LeaveBreakups
                                on LApp.Id equals LBrk.LeaveApplication
                                 where Emp.Team == 8 && LBrk.StartDate.Year == 2015 && LBrk.StartDate.Month == 5 
                                 select new { StartDate = LBrk.StartDate.Day, EndDate = LBrk.EndDate.Day, diff = (DbFunctions.DiffDays(LBrk.StartDate, LBrk.EndDate) + 1) }).ToList();
这是错误的 LINQ to Entities无法识别方法“Int32到Int32(System.String)”方法,并且无法将此方法转换为存储表达式。 在第3行,即

 on LApp.Employee equals Convert.ToInt32(Emp.EmployeeNumber)
当我在内部连接期间将字符串转换为int时,我看到了您的。您的
EmployeeNumber
字段中似乎填充了固定大小(5)的零左填充字符串表示的数字。如果这是真的,您可以使用来自的技巧来解决问题

替换

on LApp.Employee equals Convert.ToInt32(Emp.EmployeeNumber)

刚刚看到你的照片。您的
EmployeeNumber
字段中似乎填充了固定大小(5)的零左填充字符串表示的数字。如果这是真的,您可以使用来自的技巧来解决问题

替换

on LApp.Employee equals Convert.ToInt32(Emp.EmployeeNumber)


可能重复的请参阅我对linqued Queries有点陌生请帮助…:)。我知道这很混乱,但LINQtoEntities不支持许多通常可用的方法(例如在LINQtoObjects中),即使查询编译w/o错误。在数据库中以字符串形式存储数字是一种不好的做法。无论如何,您可以在LApp.Employee.ToString()等于Emp.EmployeeNumber(受支持)上尝试相反的转换
,看看它是否有效。可能重复see也可能是我对linqued Queries有点陌生请帮助……)。我知道这很混乱,但LINQtoEntities不支持许多通常可用的方法(例如在LINQtoObjects中),即使查询编译w/o错误。在数据库中以字符串形式存储数字是一种不好的做法。无论如何,您可以在LApp.Employee.ToString()上尝试相反的转换
(受支持)并查看它是否有效。但是LApp.Employee是一个整型字段yep-上面将其转换为“00001”等字符串。无法将类型“System.Int32”转换为类型“System.Object”。LINQ to Entities仅支持强制转换EDM基元或枚举类型。好的,最后一次尝试-在更新中添加
ToString()
调用。我发布的两个代码版本都在EF6.1.3中执行,没有任何错误,因此您可能使用的是过时的EF版本。我放弃了,祝你好运。但是LApp.Employee是一个整数字段yep-上面会将其转换为“00001”等字符串。无法将类型“System.Int32”转换为类型“System.Object”。LINQ to Entities仅支持强制转换EDM基元或枚举类型。好的,最后一次尝试-在更新中添加
ToString()
调用。我发布的两个代码版本都在EF6.1.3中执行,没有任何错误,因此您可能使用的是过时的EF版本。我放弃了,祝你好运。