我正在使用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以仅获取不同的行?
答案 0 :(得分:1)
要获得字段值的第一次出现,您可以按该字段进行分组,然后获取每个分组的第一行。
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()
};