C# 清除IList并选择第二个元素
我有一个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 =>
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();