Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 调用';GroupBy';方法在基础存储提供程序中不可比较_C#_Linq_Entity Framework - Fatal编程技术网

C# 调用';GroupBy';方法在基础存储提供程序中不可比较

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

我正在使用EntityFramework(v4)处理下面的查询

我已经有一个名为
\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定义为复杂类型吗?请在问题中添加数据库模型。这个答案将从一些代码中受益匪浅。目前,它更适合作为一个评论,而不是一个实际的答案