ADO.NET EF - 使用LINQ 2 Entity和GroupBy来区分两列

时间:2013-03-25 15:18:17

标签: c# entity-framework linq-to-entities

我知道标题有点令人困惑,但问题非常简单。我正在使用Entity FrameworkCode First方法。我有两个关系为1的实体:N。记录的唯一性来自两列的组合 - Code + CountryID。首先我认为Code本身将是唯一文件,因此我获取不同记录的查询看起来像这样:

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

但现在却发生了这样的情况:我失去了Code(或者确切地说 - Sole.Code)相同但CountryID不同的记录。我需要的是更改我的查询,以便返回Code + CountryID唯一的所有记录。

1 个答案:

答案 0 :(得分:1)

您希望按匿名类型进行分组:

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

BTW:对FirstOrDefault返回的群组使用GroupBy没有意义。由GroupBy返回的每个组都包含至少一个元素,因此保证使用First始终成功。