c# Trying to reverse a list

半世苍凉 提交于 2019-11-30 00:12:50

Try:

NavItems.Reverse();
return NavItems;

List<T>.Reverse() is an in-place reverse; it doesn't return a new list.

This does contrast to LINQ, where Reverse() returns the reversed sequence, but when there is a suitable non-extension method it is always selected in preference to an extension method. Plus, in the LINQ case it would have to be:

return someSequence.Reverse().ToList();

One workaround would be Return NavItems.AsEnumerable().Reverse();

.Reverse() on a list reverses the items within the list, it does not return a new reversed list.

Reverse() does not returns reversed list itself, it modifies original list. So rewrite it as following:

return NavItems.Reverse(); 

TO

NavItems.Reverse(); 
return NavItems;

Reverse() does not return a List as expected of your function.

NavItems.Reverse();
return NavItems;

.Reverse reverses the "in-place"..., try

NavItems.Reverse();
return NavItems;

If you have a list like in your example:

List<Lite.CategoryNavItem> NavItems

You can use the generic Reverse<> extensions method to return a new list without modifiying the original one. Just use the extension method like this:

List<Lite.CategoryNavItem> reversed = NavItems.Reverse<Lite.CategoryNavItem>();

Notes: You need to specify the <> generic tags to explicit use the extension method. Don't forget the

using System.Linq;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!