只是想检查是否有办法通过多列来区分。提前致谢!!!
顺便说一句,我在这里找到了一个很棒的 LINQ 扩展,但需要一些指导才能将它用于多个列
只是想检查是否有办法通过多列来区分。提前致谢!!!
顺便说一句,我在这里找到了一个很棒的 LINQ 扩展,但需要一些指导才能将它用于多个列
好吧,你可以先做投影:
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();
那行吗?
您可以使用 Groupby 代替 Distinct,然后选择每个组的 Top Most 记录
从 objEntity 中的 o 返回
group o by new { o.Field1, o.Field2, o.Field3, o.Field4, o.Field5 } into grp select grp.FirstOrDefault();
这将为您提供EntityObject而不是AnonymousType
通过“通过多列区分”,您真正的意思是分组依据。
当您要求不同时,这意味着您将获得所有不同的行,或者通过使用表中的所有列获得一个组。
如果您只想为列的子集获取不同的分组,请在您的子句中使用 group by,指定要分组的列。然后,选择组,因为每个组只需要一组键。
另一个简单的选择是创建一个不同的字符串。
var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);
var qry = (from cust in db.Customers select new {cust.ID, cust.Name, cust.Region}).GroupBy(x => new { x.Name,x.Region}).select(z => z .OrderBy(i => i.cust).FirstOrDefault()).ToList();