2010-04-30 76 views
4

我有一个这样的名单:LINQ的鲜明名录

列表

age name 
1  bob 
1  sam 
7  fred 
7  tom 
8  sally 

我需要做的人LINQ查询并获得许多不同年龄的一个int(3)

int distinctAges = people.SomeLinq(); 

怎么样? 怎么样?

+0

这是一个非常简单的问题,所以这听起来像功课给我们。你试过什么了? – 2010-04-30 21:35:12

+0

查看'GroupBy'和'Count'。 – 2010-04-30 21:37:06

回答

11

选择年龄,然后使用Distinct和Count。

var ages = people.Select(p => p.Age).Distinct().Count() 

或者你可以使用的GroupBy和计数

var ages = people.GroupBy(p => p.Age).Count(); 
0

下载LinqPad,并给这些简单的LINQ /λ查询自己。它很容易比较SQL和相应的Linq/lambda结果集。

你会开始

select Age, Name 
from People 
group by Age, Name 

然后打开另一个选项卡

var ages = (from p in Peoples 
group p by p.Age into g 
select g); 
ages.Dump(); 

然后打开另一个选项卡

var ages = Peoples.GroupBy(p => p.Age); 
ages.Dump();