2013-01-03 41 views
1

鉴于以下情况,我希望能够根据两个字段提取非独特的值:名称和国家/地区。在这个例子中,我想返回列表中的前两个。基于三个不同字段返回不同的对象

List<City> cities = new List<City> 
{ 
new City{ Name = "Sydney", Country = "Australia", Galaxy = "Mine" }, 
new City{ Name = "Sydney", Country = "Australia", Galaxy = "Yours" }, 
new City{ Name = "New York", Country = "USA", Galaxy = "Ours"}, 
new City{ Name = "Paris", Country = "France", Galaxy = "Theirs" }, 

}; 
+5

指定你到底要什么?你想要名称和国家/地区的独特价值?为什么然后__列表中的前两名?如果你想要第一个 - 选择它们的意思是什么?这个问题很模糊 –

+0

好点,我的错误不是更清楚。预期的结果将产生列表中的前两个。 lazyberezovsky给出了我正在寻找的答案。 – CLJ

回答

3

这个查询可以通过姓名和国家(在你的情况下,即前两个)返回非不同的城市:

IEnumerable<City> query = 
    cities.GroupBy(c => new { c.Name, c.Country }) 
      .Where(g => g.Count() > 1) 
      .SelectMany(g => g); 
相关问题