[英]Group by one column and Distinct by another column using Linq
我正在使用Linq查询来对列名称进行分组并返回行列表。
var query = from row in ProcessSummaryData.AsEnumerable()
group row by new { Key = row .Field<string>("GroupDescription") } into g
select new
{
GroupDescription = g.Key,
Values = g.ToList(),
};
这个查询的输出是这样的
GroupDescription Values
1 12,abc,xyz
12,abx,yut
13,tye,lki
2 14,asd,acd
现在,在上面的示例中,Values是一个DataRow,而我刚刚给出了其中一个值的示例。 现在,我想要的是对于GroupDescription'1',输出仅具有'12'值的一行。 我尝试了几件事,其中之一是在第一个列表上有另一个Linq查询,但这使事情复杂化了。 如何使用linq按第一列分组,然后对某些返回列的列表使用Distinct来仅获得Distinct行?
要获得字段值的第一个出现,可以按该字段分组,然后进行每个分组的第一行。
var query = from row in ProcessSummaryData.AsEnumerable()
group row by new { Key = row .Field<string>("GroupDescription") } into g
select new
{
GroupDescription = g.Key,
Values = (from value in g.ToList()
group value by value["Id"] into valueGroup
select valueGroup.First()).ToList()
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.