我有一个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();
这可能吗?还是我应该寻找一种新的方法?
最佳答案
尝试结合GroupBy
和First
:
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/