c# Trying to reverse a list

后端 未结 7 1647
傲寒
傲寒 2020-12-13 11:44
public class CategoryNavItem
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Icon { get; set; }

    public CategoryNavItem(         


        
相关标签:
7条回答
  • 2020-12-13 12:13

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

    0 讨论(0)
  • 2020-12-13 12:14

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

    0 讨论(0)
  • 2020-12-13 12:14

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

    NavItems.Reverse();
    return NavItems;
    0 讨论(0)
  • 2020-12-13 12:19

    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();
    
    0 讨论(0)
  • 2020-12-13 12:23

    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;
    
    0 讨论(0)
  • 2020-12-13 12:32

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

    return NavItems.Reverse(); 
    

    TO

    NavItems.Reverse(); 
    return NavItems;
    
    0 讨论(0)
提交回复
热议问题