C# 无法创建类型为的常量值
我在下面的查询中收到此错误。我搜索了其他类似的链接,但无法实现此功能: 无法创建“匿名类型”类型的常量值。只有 在此上下文中支持基元类型或枚举类型C# 无法创建类型为的常量值,c#,linq,C#,Linq,我在下面的查询中收到此错误。我搜索了其他类似的链接,但无法实现此功能: 无法创建“匿名类型”类型的常量值。只有 在此上下文中支持基元类型或枚举类型 var users=来自GetUsers(EmployeeID)中的 通过new{a.EmployeeID}将new{a}分组到g中 选择新用户移动{EmployeeID=g.Key.EmployeeID}; var resulttst=来自_repository.GenericRepository().GetAll()中的s 在s.Employee
var users=来自GetUsers(EmployeeID)中的
通过new{a.EmployeeID}将new{a}分组到g中
选择新用户移动{EmployeeID=g.Key.EmployeeID};
var resulttst=来自_repository.GenericRepository().GetAll()中的s
在s.Employee_ID等于u.EmployeeID上加入u用户
其中s.EffectiveDate!=空(&s.EffectiveDate>dt六个月
按新的{s.Employee\u ID,s.Business\u Unit,s.First\u Name,s.Last\u Name}将新的{s}分组到g中
orderby g.Key.Employee_ID,g.Min(m=>m.s.EffectiveDate)
选择新用户移动
{
有效日期=g.Min(m=>m.s.EffectiveDate),
EmployeeID=g.Key.Employee\u ID,
FirstName=g.Key.First_Name,
LastName=g.Key.Last_Name,
BusinessUnit=g.Key.Business\u Unit,
PreviousBU=null
};
之所以出现此错误,是因为在转换为SQL的LINQ查询中使用了对象的本地序列,用户。但是,UserMovement
对象没有翻译。您可以在LINQ中将本地序列用于SQL后端,但前提是它们包含基元值:
var empIds = (from a in GetUsers(EmployeeID)
select a.EmployeeID).Distinct();
from s in _repository.GenericRepository<STG_WDUsers>().GetAll()
.Where(u => empIds.Contains(u.Employee_ID));
var empIds=(来自GetUsers(EmployeeID)中的
选择a.EmployeeID).Distinct();
从_repository.GenericRepository().GetAll()中的s
其中(u=>empIds.Contains(u.Employee_ID));
我不知道这是否是问题的根源,但您似乎在不必要地创建匿名类型。为什么您要使用将new{a.EmployeeID}按new{a.EmployeeID}分组为g
而不是仅将a.EmployeeID分组为g
?谢谢,我已经删除了多个列来尝试分解这个问题-对于linq来说是非常新的。谢谢Gert,这很有帮助。
var empIds = (from a in GetUsers(EmployeeID)
select a.EmployeeID).Distinct();
from s in _repository.GenericRepository<STG_WDUsers>().GetAll()
.Where(u => empIds.Contains(u.Employee_ID));