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限制。