c# - 在某些行上使用.Distinct()

标签 c# linq entity-framework

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

List<Catalogue> data = context.Catalogue.Where(x=>x.ManID == id).ToList();


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

List<Catalogue> data = context.Catalogue.Where(x=>x.ManID == id)
                .Distinct().ToList();


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

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


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

最佳答案

尝试结合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();

关于c# - 在某些行上使用.Distinct(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9770505/

相关文章:

c# - C# 中的通用方法不调用最严格的重载

c# - 如何使用 LINQ 从 IEnumerable<T> 的属性中获取单个 IENumerable<X>?

c# - 从 Entity Framework 中的存储过程返回最终结果

c# - Entity Framework Code First 通过 DataAnnotations 实现多对多关系

c# - 虽然不可能创建常量属性,但有没有办法在使用常量字段时避免违反 DRY 规则?

c# - 使用 LINQ 进行查询,其中上下文与对象列表中的多个参数相匹配

c# - 更新 Azure 服务总线队列上已有的代理消息

c# - 如何在 WPF TreeView 中显示类层次结构?

c# - 接口(interface)中的 ICollection 与另一个接口(interface)作为类型

c# - 合并从不同表投影到一个实体的两个可查询对象