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

本文关键字:两列 GroupBy EF NET 使用 LINQ Entity ADO | 更新日期: 2023-09-27 18:05:59

我知道这个标题有点令人困惑,但问题非常直接。我使用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是唯一的。

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

您希望按匿名类型分组:

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

BTW:在GroupBy返回的组上使用FirstOrDefault是没有意义的。GroupBy返回的每个组至少包含一个元素,因此使用First保证总是成功的。