次のようなオブジェクトがあります。
Notice
{
string Name,
string Address
}
List<Notice>
すべての個別の名前と、特定の名前がコレクションに表示される回数を出力したい。
例えば:
Notice1.Name="Travel"
Notice2.Name="Travel"
Notice3.Name="PTO"
Notice4.Name="Direct"
出力が欲しい
Travel - 2
PTO - 1
Direct -1
私はこのコードで明確な名前を得ることができますが、1つのlinqステートメントですべてを数えることはできないようです
theNoticeNames= theData.Notices.Select(c => c.ApplicationName).Distinct().ToList();
var noticesGrouped = notices.GroupBy(n => n.Name).
Select(group =>
new
{
NoticeName = group.Key,
Notices = group.ToList(),
Count = group.Count()
});
GroupBy
の異なるオーバーロード を使用したLenielの回答のバリエーション
var query = notices.GroupBy(n => n.Name,
(key, values) => new { Notice = key, Count = values.Count() });
基本的に、Select
呼び出しを省略します。