Как мне отсортировать мой список типов классов? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть класс, который выглядит следующим образом

class FeaturedListing 
{
    public string Title { get; set; }
    public string Link { get; set; }
    public string Published { get; set; }
    public string Views { get; set; }
    public string Featured { get; set; }
    public string CategoryName { get; set; }
}

И затем у меня есть список, который выглядит следующим образом

public static List<FeaturedListing> FeatiredListingsList = new List<FeaturedListing>();

После добавления нескольких объектов в этот список, как это сделатьЯ правильно сортирую по Views просмотрам, выглядит так

0 visits
52 visits
5 visits
и т. Д.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Самый простой способ - сделать OrderBy на вашем FeaturedListing.Views.

var orderedList = FeatiredListingsList.OrderBy(x => x.Views).ToList();

Однако, если вы можете изменить структуру вашей программы, вам действительно стоит подумать о том, чтобы сделать Views an int, чтобы вы могли сделать правильную числовую сортировку.Если по какой-то причине вы должны вывести значение Views как 0 visits, 52 visits и т. Д., Лучшим подходом будет создание свойства get only в вашем классе FeaturedListing, например:

public class FeaturedListing
{
    public string Title { get; set; }
    public string Link { get; set; }
    public string Published { get; set; }
    public int Views { get; set; }
    public string ViewsStr { get { return string.Format("{0} visits", Views); } }
    public string Featured { get; set; }
    public string CategoryName { get; set; }
}
0 голосов
/ 01 июня 2018

Использовать List.Sort - сортирует элементы во всем списке с использованием указанного System.Comparison ..

void Main()
{
    var reatiredListingsList = new List<FeaturedListing>();
    reatiredListingsList.Add(new FeaturedListing{ Views = "0 Views"});
    reatiredListingsList.Add(new FeaturedListing{ Views = "52 Views"});
    reatiredListingsList.Add(new FeaturedListing{ Views = "5 Views"});

    reatiredListingsList.Sort((x, y) => {
        var xv = int.Parse(x.Views.Replace(" Views", ""));
        var yv = int.Parse(y.Views.Replace(" Views", ""));
        return xv < yv ? -1 : (xv > yv ? 1 : 0);
    });
}

class FeaturedListing
{
    public string Title { get; set; }
    public string Link { get; set; }
    public string Published { get; set; }
    public string  Views { get; set; }
    public string Featured { get; set; }
    public string CategoryName { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...