添加项目计数LINQ选择
本文关键字:LINQ 选择 项目 添加 | 更新日期: 2023-09-27 18:05:13
我有一个问题,我想不起来。
我有一个Sharepoint项目列表,其中有类别。我想阅读所有类别,并计算它们出现的频率。
在另一种方法中,我想取categoryCount,用它除以总票数,再乘以100得到百分比。
问题是计数。
这是我到目前为止的查询:
public IEnumerable<KategorieVM> GetAllCategories()
{
int counter = 0;
var result = (from t in Tickets
where t.Kategorie != Kategorie.Invalid && t.Kategorie != Kategorie.None && t.Kategorie != null
select new KategorieVM() { _name = t.Kategorie.ToString(), _val = counter++ });
return result;
}
的问题是,我不能使用计数器++。是否有一个干净的解决方案?为统计每个类别而构建查询的选项不是有效的选项。该列表有15000个列表,并且还在不断增长。最后,我需要遍历每个类别,并调用查询来计算门票,这只需要大约3分钟。因此,在一个查询中计算类别是强制性的。
任何帮助都非常感谢。
/edit:为清楚起见:计数器++作为计数只是一个大脑放屁-我不知道我为什么要尝试它;这将产生一个索引。我需要一种方法来计算"类别"在这15k个条目中出现的频率。
您可以使用GroupBy
在查询本身中执行Count
:
return Tickets
.Where(t => t.Kategorie != Kategorie.Invalid && t.Kategorie != Kategorie.None && t.Kategorie != null)
.GroupBy(t => t.Kategorie.ToString())
.Select(g => new KategorieVM() { _name = g.Key, _val = g.Count() });