2015-04-23 26 views
0

GroupBy创建我要排序的对象列表的列表。我只需要在第一个元素中的每个列表访问列表中的第一个对象列表

List<string> topFive = listOfObjects.GroupBy(x=>x.names).OrderByDescending(x=>x.Count())... 

好了,我有对象的列表,由有多少个对象在每个列表降序排列。我需要从每个列表中检索1个对象,即我需要检索每个嵌套列表中的第一个对象,并将其放入一个新列表中,以便我可以选择.names属性

混淆来自于GroupBy创建一个列表,列表中有多个对象,其中该列表位于外部列表的元素中。所以我需要从每个NESTED列表中提取1个对象

我一直在扫描最近2个小时的堆栈溢出,并且没有找到相关答案的关键字。

这是我最好的猜测,但不实际工作

List<string> topFive = listOfObjects.GroupBy(x => x.names).OrderByDescending(x => x.Count()).Select(x => x.Select(y => y.names)); 
+0

有人可以帮忙吗? SelectMany是否正在上班?我不知道如何使用它,它不让我访问对象上的属性... –

+0

'List topFive = listOfObjects.GroupBy(x => x.names).OrderByDescending(x = > x.Count())。SelectMany(x => x.Select(y => y.names).Take(5))。ToList ();' 这是就我所知,这仍然不起作用,但是这是更多沿着我需要的轨道 –

回答

2

你试过:

topFive.First().names 
+0

这不起作用没有.names属性列表。 .First()只引用列表中的第一个列表 –

+0

group by创建一个我正在排序的对象列表。我只需要每个列表中的第一个元素 –

0
List<string> topFive = listOfObjects.GroupBy(x => x.names).OrderByDescending(x => x.Count()).SelectMany(x => x.Select(y=>y.names).Distinct()).Take(5).ToList(); 

又想通了我自己的答案。

选择许多选项是从列表中的每个对象中选择名称,并且只将不同的名称提取到新列表中,并将前5个列表添加到新列表中。

相关问题