Заказ с условиями - PullRequest
       1

Заказ с условиями

0 голосов
/ 30 ноября 2018

Попытка получить это в следующем порядке, но не работает, он не возвращает правильный порядок, где Отменено выбрано перед Неоплаченным, пожалуйста, дайте мне знать

       dt = dt.AsEnumerable()
            .OrderBy(x => x["TicketStatus"].ToString())
            .ThenBy(x => x["TicketStatus"].ToString() == "Attended")
            .ThenBy(x => x["TicketStatus"].ToString() == "Issued")
            .ThenBy(x => x["TicketStatus"].ToString() == "Unpaid")
            .ThenBy(x => x["TicketStatus"].ToString() == "Cancelled")
            .GroupBy(x => new {EventID = x["EventID"].ToString(), ContactID = x["ContactID"].ToString()})
            .Select(x => x.FirstOrDefault()).CopyToDataTable();

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

просто узнай это работает

        List<string> sortOrder = new List<string> { "Attended", "Issued", "Unpaid", "Cancelled" };

        dt = dt.AsEnumerable()
            .OrderBy(x => sortOrder.IndexOf(x["TicketStatus"].ToString()))
            .GroupBy(x => new {EventID = x["EventID"].ToString(), ContactID = x["ContactID"].ToString()})
            .Select(x => x.FirstOrDefault()).CopyToDataTable();
0 голосов
/ 30 ноября 2018

Попробуйте что-то вроде этого

string[] status= { "Attended", "Issued", "Unpaid", "Cancelled" };

var sortstatus = from s in status
                  orderby s
                  select s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...