利用LINQ高效分组和计数数据
C#中的LINQ(语言集成查询)提供了一种强大的方法来操作和查询数据。在需要分组和计数数据集的情况下,LINQ提供了一种简洁高效的解决方案。
假设我们有一个包含用户及其相关指标和日期的数据集:
<code>UserInfo(姓名, 指标, 日期, 其他指标) 数据: joe 1 2011/01/01 5 jane 0 2011/01/02 9 john 2 2011/01/03 0 jim 3 2011/01/04 1 jean 1 2011/01/05 3 jill 2 2011/01/06 5 jeb 0 2011/01/07 3 jenn 0 2011/01/08 7</code>
我们的目标是获取一个表格,按指标顺序(0, 1, 2, 3...)分组,并显示每个指标出现的总次数。
使用LINQ进行分组和计数
使用LINQ实现此目标,我们可以使用'GroupBy'和'Select'方法:
<code>foreach(var line in data.GroupBy(info => info.metric) .Select(group => new { Metric = group.Key, Count = group.Count() }) .OrderBy(x => x.Metric)) { Console.WriteLine("{0} {1}", line.Metric, line.Count); }</code>
说明:
输出:
<code>0 3 1 2 2 2 3 1</code>
另一种方法
虽然提供的LINQ解决方案效率很高,但可以进一步简化:
<code>var result = data.GroupBy(info => info.metric) .Select(group => new { Metric = group.Key, Count = group.Count() }) .OrderBy(x => x.Metric);</code>
这里的唯一区别是,我们没有使用'foreach'循环迭代结果,而是将其赋值给名为'result'的变量。
关键点
以上是LINQ 如何高效地对数据进行分组并统计出现次数?的详细内容。更多信息请关注PHP中文网其他相关文章!