【发布时间】:2010-10-16 22:50:24
【问题描述】:
只是想检查是否有办法通过多列来区分。提前谢谢!!!
顺便说一句,我找到了一个很棒的 LINQ 扩展 here,但需要一些指导才能将它用于多个列
【问题讨论】:
标签: linq distinct linq-to-dataset
只是想检查是否有办法通过多列来区分。提前谢谢!!!
顺便说一句,我找到了一个很棒的 LINQ 扩展 here,但需要一些指导才能将它用于多个列
【问题讨论】:
标签: linq distinct linq-to-dataset
另一个简单的选择是创建一个不同的字符串。
var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);
【讨论】:
var qry = (来自 db.Customers 中的 cust 选择新的 {cust.ID, cust.Name, cust.Region}).GroupBy(x => new { x.Name,x.Region}).select(z => z.OrderBy(i => i.cust) .FirstOrDefault()).ToList();
【讨论】:
您可以使用 Groupby 代替 Distinct,然后选择每个组的 Top Most 记录
How to LINQ Distinct by Multiple Fields without anonymous types
从 objEntity 中的 o 返回
group o by new { o.Field1, o.Field2, o.Field3, o.Field4, o.Field5 } into grp select grp.FirstOrDefault();
这将为您提供 EntityObject 而不是 AnonymousType
【讨论】:
好吧,你可以先做投影:
var qry = db.Customers.Select(cust => new {cust.ID, cust.Name, cust.Region})
.Distinct();
或者在查询语法中:
var qry = (from cust in db.Customers
select new {cust.ID, cust.Name, cust.Region}).Distinct();
这样做?
【讨论】:
“通过多列区分”您真正的意思是分组依据。
当您要求不同时,这意味着您将获得所有不同的行,或者通过使用表中的所有列获得一个组。
如果您只想对列的子集进行不同的分组,请在子句中使用 group by,指定要分组的列。然后,选择组,因为每个组只需要一组键。
【讨论】: