反转列表c#
本文关键字:列表 | 更新日期: 2023-09-27 18:25:19
我已经将EventData EntityList插入到一个普通列表中,现在我想反转它。但它给出了错误"无法将类型"void"隐式转换为"object"
List<Entities.Notification> ProgramList = EventData.ToList();
ListViewEvents.DataSource = ProgramList.Reverse();
ListViewEvents.DataBind();
如何反转此列表?是否也可以直接反转EntityList?
Reverse在适当的位置执行反转,不返回任何内容。相反:
List<Entities.Notification> ProgramList = EventData.ToList();
ProgramList.Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
reverse方法不会返回新的List
。调用它,然后设置数据源。
List<Entities.Notification> ProgramList = EventData.ToList();
ProgramList.Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
编译器选择方法List<T>.Reverse()
而不是Linq扩展方法Enumerable.Reverse<T>(this IEnumerable<T>)
。
由于List<T>.Reverse()
通过反转现有元素而不是返回新列表来修改列表,因此您可以将其称为单独的步骤:
List<Entities.Notification> ProgramList = EventData.ToList();
ProgramList.Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
或
List<Entities.Notification> ProgramList = EventData.ToList().Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
或者您可以调用AsEnumerable()
而不是ToList()
来绑定到扩展方法:
List<Entities.Notification> ProgramList = EventData.AsEnumerable();
ListViewEvents.DataSource = ProgramList.Reverse(); // returns a new IEnumerable
ListViewEvents.DataBind();
附带说明一下,扩展方法可能比List<T>.Reverse
执行得更好,因为它返回了一个按相反顺序遍历列表的迭代器,而不是物理地颠倒列表中项目的顺序。