0

私は単純なオブジェクトを持っています:

public class obj
    {
        public Int32 id { get; set; }

        public Int32 source { get; set; }
}

これでリストができました: List<obj>10 個のオブジェクトのうち、ソースが に設定されているオブジェクトが 5 つ、ソースが に設定されているオブジェクトが1003 つ、ソースが に設定されているオブジェクト200が 2 つ2500

ソース別にグループ化する必要があり、結果として 3 つのアイテム100とが生成さ2002500ます。また、次のようにカウント順に並べる必要があります。

5 100
3 200 
2 2500

最終結果は、トップカウントのソースを取得したいということです。この場合は100

4

2 に答える 2

3
var res = lst.GroupBy(o=>o.source)
             .Select(grp=>new {Count=grp.Count(),Source=grp.Key});
于 2012-11-25T17:24:55.090 に答える
3

これにより、トップカウントのソースが得られます。

int topSource = list.GroupBy(o => o.source)
                    .OrderByDescending(g => g.Count())
                    .First()
                    .Key;

説明

  • ソース値で項目をグループ化します (3 つのグループが作成されます)。
  • 各グループの項目数でグループを並べ替える
  • 最初のグループを選択します(最大アイテム数になります)
  • グループ化キー (ソース値) を取得します
于 2012-11-25T17:28:15.503 に答える