4

我有一个问题,我无法解决问题。

我有一个 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;
}

问题是,我不能使用counter++。有干净的解决方法吗?为计算每个类别而构建查询的选项不是有效选项。该列表有 15000 个 Listitem 并且还在增长。最后,我需要遍历每个类别并调用查询来计算门票,这只需要大约 3 分钟。因此,必须在一个查询中计算类别。

非常感谢任何帮助。

/编辑:为了清楚起见:作为计数的计数器++只是一个脑残——我不知道我为什么要尝试它;这将产生一个索引。我需要一种方法来计算“类别”在这 15k 条目中出现的频率。

4

1 回答 1

4

您可以使用在查询本身内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() });
于 2013-03-21T15:37:29.543 回答