在某些行上使用.Distinct()

Cal*_*ass 1 c# linq entity-framework

我有一个Linq查询,它返回基于where子句作为列表存储在表中的所有数据:

List<Catalogue> data = context.Catalogue.Where(x=>x.ManID == id).ToList();
Run Code Online (Sandbox Code Playgroud)

这将返回23个项目,但其中一些项目包含一些包含重复数据的列,我将其称为ColumnA,ColumnB和ColumnD.我试过了:

List<Catalogue> data = context.Catalogue.Where(x=>x.ManID == id)
                .Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

但这只返回相同的23行.我想要的是,如果我可以指定我想要具有不同值的列,例如:

List<Catalogue> data = context.Catalogue.Where(x=>x.ManID == id)
                .Distinct(x=> new { x.ColumnA, x.ColumnB, x.ColumnD }).ToList();
Run Code Online (Sandbox Code Playgroud)

这是可能的还是我应该寻找一种新的方法呢?

Mar*_*ers 7

尝试结合GroupByFirst:

List<Catalogue> data = context.Catalogue
    .Where(x => x.ManID == id)
    .GroupBy(x => new { x.ColumnA, x.ColumnB, x.ColumnD })
    .Select(g => g.First())
    .ToList();
Run Code Online (Sandbox Code Playgroud)