如何在Linq中对数据表中的列进行分组


    var res3 = dtPriorityMatrix.AsEnumerable()                
    .GroupBy(hour => hour.Field<int>("Hour"))
    .OrderBy(item => item.Key)
    .Select(item => new { Hour = item.Key });

我有一个数据表,有5列和大约200多行的数据。一个有小时(0-23(,其他有优先级1、优先级2,依此类推,直到优先级4。我需要提取每小时每个优先级的项目数。我需要Linq查询的帮助,因为它不是我的强项。感谢

您必须按两列进行分组。像这个

var query = source.GroupBy(x => new { x.Column1, x.Column2 });

所以你的代码将是

 var res3 = dtPriorityMatrix.AsEnumerable()                
    .GroupBy(hour =>new { hour= hour.Field<int>("Hour"), priority=hour.Field<int>("Priority")} )
    .Select(item => new {count=item.count(), Hour = item.Key.hour, priority = item.Key.priority});

编辑

回复您的评论:

当你把结果放在一个列表中时,你可以随心所欲地把它写进去。查询的输出是一个包含小时、优先级和计数的列表。如果你想在字符串的3行中

string hLine="";
string pLine="";
string countLine="";
foreach(var item in res3)
{
hLine+= item.hour+" ";
pLine+= item.prioriy+" ";
countLine+= item.count+" ";
}

如果你想把它们放在一个表或任何东西中,使用相同的方法来填充你的表项

相关内容

  • 没有找到相关文章

最新更新