反转列表c#

use*_*271 3 c# asp.net

我已将EventData EntityList插入到普通列表中,现在我想将其反转.但它给出错误"无法将类型'void'隐式转换为'object'"

List<Entities.Notification> ProgramList = EventData.ToList();
ListViewEvents.DataSource = ProgramList.Reverse();
ListViewEvents.DataBind();
Run Code Online (Sandbox Code Playgroud)

如何撤消此列表?是否可以直接反转EntityList?

Bri*_*pin 19

反向执行逆转并且不返回任何内容.相反:

List<Entities.Notification> ProgramList = EventData.ToList();
ProgramList.Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
Run Code Online (Sandbox Code Playgroud)


Kha*_*han 5

反向方法不会返回新的List.调用它,然后设置数据源.

List<Entities.Notification> ProgramList = EventData.ToList();
ProgramList.Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
Run Code Online (Sandbox Code Playgroud)


D S*_*ley 5

编译器选择方法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();
Run Code Online (Sandbox Code Playgroud)

要么

List<Entities.Notification> ProgramList = EventData.ToList().Reverse();
ListViewEvents.DataSource = ProgramList;
ListViewEvents.DataBind();
Run Code Online (Sandbox Code Playgroud)

或者你可以调用AsEnumerable()而不是ToList()绑定到扩展方法:

List<Entities.Notification> ProgramList = EventData.AsEnumerable();
ListViewEvents.DataSource = ProgramList.Reverse(); // returns a new IEnumerable
ListViewEvents.DataBind();
Run Code Online (Sandbox Code Playgroud)

作为旁注,扩展方法可以执行得更好,List<T>.Reverse因为它返回以相反顺序遍历列表的迭代器,而不是物理地反转列表中项目的顺序.