Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 清除IList并选择第二个元素_C#_List_Linq_Distinct_Linq Group - Fatal编程技术网

C# 清除IList并选择第二个元素

C# 清除IList并选择第二个元素,c#,list,linq,distinct,linq-group,C#,List,Linq,Distinct,Linq Group,我有一个IList收藏 public IList<MyObject> Items 如何对该列表进行分组而不使用第一个元素(例如:second)?您可以使用: 如果没有那么多可以使用的项,则返回null(对于引用类型) Edit:“我选择了editem并希望在组中显示它作为主元素”: 因此,实际上,您希望获得与特定条件匹配的第一个,在这种情况下,它是选定的,您可以对组进行排序并获取第一个: var everySelected = Items .GroupBy(x =>

我有一个IList收藏

public IList<MyObject> Items
如何对该列表进行分组而不使用第一个元素(例如:second)?

您可以使用:

如果没有那么多可以使用的项,则返回null(对于引用类型)


Edit:“我选择了editem并希望在组中显示它作为主元素”:

因此,实际上,您希望获得与特定条件匹配的第一个,在这种情况下,它是选定的,您可以对组进行排序并获取第一个:

var everySelected = Items
    .GroupBy(x => x.Type)
    .Select(grp => grp.OrderByDescending(x => x == selectedItem).First())
    .ToList();

我在比较中使用了
OrderByDescending
(假设true是1,false是0)。通过这种方式,与所选项目相同引用的每个项目都会排在第一位(将其替换为您希望如何比较它们的逻辑,而不是引用相等)。

但我不知道该元素的索引。我可以按元素选择吗?@ArmenMkrtchyan:但你提到过你想取“例如:第二个”。“按元素选择”是什么意思?我已经选择了EdItem,希望在组中显示它作为主元素
var everySecond = Items.GroupBy(x => x.Type).Select(grp => grp.ElementAt(1)).ToList();
var everySelected = Items
    .GroupBy(x => x.Type)
    .Select(grp => grp.OrderByDescending(x => x == selectedItem).First())
    .ToList();