我需要獲得主題名稱和次數(計數)一個給定的主題發生。Linq group by和得到發生次數
例子:
Name: John
Topic: X, Y, Z => these are List<string>
Name: Bob
Topic: Y
Name: Suzy
Topic: Y, Z
Should generate output:
X: 1
Y: 3
Z: 2
我已經試過,但它不返回正確的結果:
var result = from r in items
orderby r.Topic
group r by r.Topic
into grp
select new { key = grp.Key, cnt = grp.Count() };
「它不會返回正確的結果」 - 這是從來沒有足夠的信息。它有什麼作用?你能提供一個[mcve]證明這一點嗎? (我們甚至無法知道目前代碼中的數據是什麼樣子。) –
分組之前的排序要點是什麼? –
@EricLippert它會影響組內項目的順序,因爲'GroupBy'確保組中的項目與原始順序中的項目具有相同的相對順序。至少對於'IEnumerable'實現。當然,這段代碼似乎並不關心組中項目的順序,但它至少*有時是明智的。 – Servy