C# 调用';GroupBy';方法在基础存储提供程序中不可比较
我正在使用EntityFramework(v4)处理下面的查询 我已经有一个名为C# 调用';GroupBy';方法在基础存储提供程序中不可比较,c#,linq,entity-framework,C#,Linq,Entity Framework,我正在使用EntityFramework(v4)处理下面的查询 我已经有一个名为\u myTable的IQueryable对象。我现在尝试添加一些过滤 MyTable(作为一个表)是关系的一部分,并连接到另一个名为MyCompany的表,而MyCompany又是一个名为MyPeople的一对多对另一个表。MyPeople中有一个日期列,我试图在Min()和Max()之间进行筛选(人员开始/离开公司) 我的代码是 this._myTable = from v in this._myTable
\u myTable
的IQueryable
对象。我现在尝试添加一些过滤
MyTable(作为一个表)是关系的一部分,并连接到另一个名为MyCompany的表,而MyCompany又是一个名为MyPeople的一对多对另一个表。MyPeople中有一个日期列,我试图在Min()和Max()之间进行筛选(人员开始/离开公司)
我的代码是
this._myTable = from v in this._myTable
group v by v.MyCompany.MyPeople into grouped
where EntityFunctions.DiffDays(grouped.Min(s => s.DateTime), grouped.Max(s => s.DateTime)) > 0
select grouped.FirstOrDefault();
程序运行,但当我检查结果时,我看到抛出了异常
“在基础存储提供程序中,调用'GroupBy'方法的键选择器类型不可比较。”
我试图理解答案,但我不能-我能读懂它所说的内容,我知道选择器类型是不可比较的,但我不明白如何修复它 v.MyCompany.MyPeople可能是对另一个表的引用(
MyPeople
)。尝试将其更改为v.MyCompany.MyPeople.Id
(或MyPeople
主键的名称)首先将结果存储在内存中,然后进行分组,这为我解决了这个问题。这是MyCompany.MyPeople定义为复杂类型吗?请在问题中添加数据库模型。这个答案将从一些代码中受益匪浅。目前,它更适合作为一个评论,而不是一个实际的答案