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# ADO.NET EF-使用LINQ 2实体和GroupBy来区分两列_C#_Entity Framework_Linq To Entities - Fatal编程技术网

C# ADO.NET EF-使用LINQ 2实体和GroupBy来区分两列

C# ADO.NET EF-使用LINQ 2实体和GroupBy来区分两列,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我知道标题有点混乱,但问题很简单。我正在使用实体框架和代码优先方法。这两个实体的关系为1:N。记录的唯一性来自两列的组合-code+CountryID。首先,我认为code本身将是唯一的文件,因此我对获取不同记录的查询如下所示: IList<SoleColor> soles = SoleColorService.All() .GroupBy(x => x.Sole.Code) .Select(g => g.F

我知道标题有点混乱,但问题很简单。我正在使用
实体框架
代码优先
方法。这两个实体的关系为1:N。记录的唯一性来自两列的组合-
code
+
CountryID
。首先,我认为
code
本身将是唯一的文件,因此我对获取不同记录的查询如下所示:

IList<SoleColor> soles = SoleColorService.All()
                .GroupBy(x => x.Sole.Code)
                .Select(g => g.FirstOrDefault())
                .ToList();
IList soles=SoleColorService.All()
.GroupBy(x=>x.Sole.Code)
.Select(g=>g.FirstOrDefault())
.ToList();

但是现在发生了这样的情况,我丢失了那些记录,其中
code
(或者确切地说,
Sole.code
)是相同的,但是
CountryID
是不同的。我需要的是更改我的查询,以便它返回
code
+
CountryID
唯一的所有记录。

要按匿名类型分组:

.GroupBy(x => new { x.Sole.Code, x.Sole.CountryID })

顺便说一句:对从
GroupBy
返回的组使用
FirstOrDefault
没有意义。
GroupBy
返回的每个组都至少包含一个元素,因此首先使用
可以确保始终成功。

谢谢,我将接受您的答案。至于
First()
这就是我更改它的原因-
方法“First”只能用作最终查询操作。考虑在这个实例中使用方法“FrestRealDebug”代替.<代码>(当我尝试<代码>第一个()/代码>时得到的错误:@ LeRon:啊,好的。我不知道这个EF限制。