Подтвердить что ты не робот

С# Попытка обратить вспять список

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();
}

Реверс не работает:

Error 3 Cannot implicitly convert type 'void' to 'System.Collections.Generic.List<Lite.CategoryNavItem>'

Любые идеи, почему это может быть?

4b9b3361

Ответ 1

Try:

NavItems.Reverse();
return NavItems;

List<T>.Reverse() является обратным на месте; он не возвращает новый список.

Это контрастирует с LINQ, где Reverse() возвращает обратную последовательность, но когда есть подходящий метод без расширения, он выбирается всегда, предпочитая метод расширения. Кроме того, в случае LINQ это должно быть:

return someSequence.Reverse().ToList();

Ответ 2

Обходным решением будет Return NavItems.AsEnumerable().Reverse();

Ответ 3

.Reverse() в списке меняются позиции в списке, он не возвращает новый перевернутый список.

Ответ 4

Reverse() не возвращает реверсивный список, он изменяет исходный список. Поэтому перепишите его следующим образом:

return NavItems.Reverse(); 

К

NavItems.Reverse(); 
return NavItems;

Ответ 5

Reverse() не возвращает список, как ожидалось от вашей функции.

NavItems.Reverse();
return NavItems;

Ответ 6

.Reverse отменяет "на месте"..., попробуйте

NavItems.Reverse();
return NavItems;