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のリストアイテムがあり、増え続けています。最後に、すべてのカテゴリを繰り返し処理し、クエリを呼び出してチケットをカウントする必要があります。これには約3分かかります。したがって、1つのクエリでカテゴリをカウントすることは必須です。

どんな助けでも大歓迎です。

/ edit:明確にするために:countとしてのcounter++は単なる頭脳でした-なぜ私がそれを試したのかわかりません。これにより、インデックスが作成されます。これらの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 に答える