3 回答

TA貢獻1995條經(jīng)驗 獲得超2個贊
調(diào)用之后GroupBy,您將獲得一系列組IEnumerable<Grouping>,其中每個分組本身都會公開Key用于創(chuàng)建組的組,也是IEnumerable<T>原始數(shù)據(jù)集中的任何項目。您只需要調(diào)用Count()該分組即可獲得小計。
foreach(var line in data.GroupBy(info => info.metric)
.Select(group => new {
Metric = group.Key,
Count = group.Count()
})
.OrderBy(x => x.Metric)
{
Console.WriteLine("{0} {1}", line.Metric, line.Count);
}
這是一個非常快速的回復,但我對第一行有一點問題,特別是“data.groupby(info => info.metric)”
我假設(shè)你已經(jīng)有一些class看起來像的列表/數(shù)組
class UserInfo {
string name;
int metric;
..etc..
}
...
List<UserInfo> data = ..... ;
當你這樣做時data.GroupBy(x => x.metric),它意味著“對于xIEnumerable中定義的每個元素data,計算它.metric,然后將具有相同度量的所有元素分組為a Grouping并返回IEnumerable所有結(jié)果組。給出你的示例數(shù)據(jù)集
<DATA> | Grouping Key (x=>x.metric) |
joe 1 01/01/2011 5 | 1
jane 0 01/02/2011 9 | 0
john 2 01/03/2011 0 | 2
jim 3 01/04/2011 1 | 3
jean 1 01/05/2011 3 | 1
jill 2 01/06/2011 5 | 2
jeb 0 01/07/2011 3 | 0
jenn 0 01/08/2011 7 | 0
在groupby之后會產(chǎn)生以下結(jié)果:
(Group 1): [joe 1 01/01/2011 5, jean 1 01/05/2011 3]
(Group 0): [jane 0 01/02/2011 9, jeb 0 01/07/2011 3, jenn 0 01/08/2011 7]
(Group 2): [john 2 01/03/2011 0, jill 2 01/06/2011 5]
(Group 3): [jim 3 01/04/2011 1]

TA貢獻1836條經(jīng)驗 獲得超4個贊
假設(shè)userInfoList
是List<UserInfo>
:
var groups = userInfoList .GroupBy(n => n.metric) .Select(n => new { MetricName = n.Key, MetricCount = n.Count() } ) .OrderBy(n => n.MetricName);
對于lambda表達式GroupBy()
,n => n.metric
意味著它會得到場metric
從每一個UserInfo
遇到的對象。類型n
取決于上下文,在第一次出現(xiàn)時是類型UserInfo
,因為列表包含UserInfo
對象。在第二次出現(xiàn)n
是類型Grouping
,因為現(xiàn)在它是一個Grouping
對象列表。
Grouping
有像你這樣的擴展方法.Count()
,.Key()
以及你期望的其他任何東西。正如你查.Lenght
一個string
,你可以檢查.Count()
在一組。

TA貢獻1856條經(jīng)驗 獲得超11個贊
userInfos.GroupBy(userInfo => userInfo.metric) .OrderBy(group => group.Key) .Select(group => Tuple.Create(group.key, group.Count()));
- 3 回答
- 0 關(guān)注
- 454 瀏覽
添加回答
舉報