以下格式的数据对象列表
Col1 Col2 Col3
B 45 36
B 12 69
A 46 76
C 89 09
B 451 37
D 435 46
A 450 50
D 98 43
B 358 39
A 987 89
需要获得如下格式的结果集('A'发生3次,'B'发生4次等)
Value Count
A 3
B 4
C 1
D 2
如何使用LINQ或lambda表达式获得如上所述的结果集?
答案 0 :(得分:8)
您可以使用GroupBy。
var groupedlist = list.GroupBy(c => c.Col1)
.Select((key, c) => new {Value = key, Count = c.Count()});
答案 1 :(得分:7)
您可以通过lambda表达式实现它,如
var list = from x in dataObjects
group x by x.Col1 into g
select new { Value = g.Key, Count = g.Count() };
使用Linq扩展方法GroupBy
作为@Asif
答案 2 :(得分:6)
var dictionary = list.GroupBy(str => str.Col1)
.ToDictionary(group => group.Key, group => group.Count());
答案 3 :(得分:3)
在col1
上查看使用.GroupBy()
LINQ方法。然后,您可以对结果组使用.Count()
来确定每个组中的数量。
答案 4 :(得分:2)
List<TestOverFlow> list = new List<TestOverFlow>()
{
new TestOverFlow {Col1="B",Col2=45,Col3=36},
new TestOverFlow {Col1="B",Col2=12,Col3=69},
new TestOverFlow {Col1="A",Col2=46,Col3=76},
new TestOverFlow {Col1="C",Col2=89,Col3=09},
new TestOverFlow {Col1="C",Col2=10,Col3=09},
new TestOverFlow {Col1="C",Col2=89,Col3=1},
};
var Query = from result in list orderby result.Col1
group result by result.Col1 into g
select new { Value = g.Key, Count = g.Count() };
foreach (var x in Query)
{
Console.WriteLine("{0},{1}", x.Value, x.Count);
}
结果:
Value Count
A 1
B 2
C 3