LINQ заказ, а затем - PullRequest
       4

LINQ заказ, а затем

0 голосов
/ 08 июля 2019

мой код:

  var list3 = _ItemForCheckService
    .GetBy(x => x.Status != Status.Deleted)
    .OrderBy(x => x.Approver != null || x.Approver2 != null)
    .ThenBy(x => x.ModifiedDate)
    .ToList();

утверждающий = guid Approver2 = измененный guiddate = datetime

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

в моем коде не работает.

Спасибо.

Редактировать : Я пытался OrderByDesc все еще я не вижу

сгруппированные результаты утверждающего или утверждающего2

в верхней или нижней моей страницы ... они не сгруппированы вместе

1 Ответ

1 голос
/ 08 июля 2019

Без данных испытаний для определения ошибки требуется хрустальный шар.У вас может быть несколько проблем здесь:

  1. Поскольку false < true вы можете использовать .OrderByDescending(...) вместо .OrderBy()
  2. Поскольку Guid равно struct это не может быть null (но его можно сравнить с null для возврата true)
  3. Возможно, вы захотите надеть топовые предметы, которые имеют оба Approver и Approver2, затем элементы с одиночным утверждающим, затем с none .

Code (при условии, что Approver, а также Approver2 являютсятипа Guid):

var list3 = _ItemForCheckService
   .GetBy(x => x.Status != Status.Deleted)
   .OrderByDescending(x => x.Approver != default(Guid) || x.Approver2 != default(Guid))
   .ThenBy(x => x.ModifiedDate)
   .ToList();

или, если мы хотим реализовать точку 3.:

var list3 = _ItemForCheckService
   .GetBy(x => x.Status != Status.Deleted)
   .OrderBy(x => (x.Approver != default(Guid) ? 0 : 1) + 
                 (x.Approver2 != default(Guid) ? 0 : 1))
   .ThenBy(x => x.ModifiedDate)
   .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...