c# Trying to reverse a list
I have the following code:
public class CategoryNavItem
{
public int ID { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public CategoryNavItem(int CatID, string CatName, string CatIcon)
{
ID = CatID;
Name = CatName;
Icon = CatIcon;
}
}
public static List<Lite.CategoryNavItem> getMenuNav(int CatID)
{
List<Lite.CategoryNavItem> NavItems = new List<Lite.CategoryNavItem>();
-- Snipped code --
return NavItems.Reverse();
}
But I get the following error:
Cannot implicitly convert type 'void' to
'System.Collections.Generic.List<Lite.CategoryNavItem>'
Any ideas why this might be?
Solution 1:
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();
Solution 2:
One workaround would be Return NavItems.AsEnumerable().Reverse();
Solution 3:
.Reverse()
on a list reverses the items within the list, it does not return a new reversed list.