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+" ";
}
如果你想把它们放在一个表或任何东西中,使用相同的方法来填充你的表项