Как выбрать список различных значений на основе некоторых значений, используя linq или сущность - PullRequest
0 голосов
/ 04 июля 2018

Я хочу получить все Pre_Number, где все Reconcile_Status, связанные с этим Pre_Number = null. В этом случае в списке не должно быть ни одного элемента. Если бы существовал какой-то другой Pre_number, например, для. 7/2018, и у него есть две записи, и Reconcile_Status для этих записей - NULL, тогда я должен получить один элемент в списке - 7 / 2018.

image

Я пытался

var NoNReconciled = context.tbl_prerelease_invoice
                           .Where(x => x.Reconcile_Status==null)
                           .Select(y => new { y.Pre_number }).Distinct().ToList();

Но я получил 6/2018

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Нет необходимости создавать анонимный объект для Pre_Number. Попробуйте код ниже

var NoNReconciled = context.tbl_prerelease_invoice .Where(x => x.Reconcile_Status==null) .Select(y => y.Pre_number).Distinct().ToList();

0 голосов
/ 04 июля 2018

Попробуйте это-

context.tbl_prerelease_invoice.GroupBy(r => r.Pre_number).Where(kv => kv.All(r => r.Reconcile_Status==null)).Select(kv => kv.Key).ToList();
0 голосов
/ 04 июля 2018

Что ж, ваша текущая попытка только проверяет, что есть хотя бы одна запись, где Reconcile_Status равно нулю, но не проверяет, что нет записей с таким же Pre_number, где Reconcile_Status не равно нулю.

Это должно сработать:

var NoNReconciled = context.tbl_prerelease_invoice
   .Where(x => x.Reconcile_Status == null && 
          !context.tbl_prerelease_invoice
          .Any(y => y.Pre_number == x.Pre_number && y.Reconcile_Status != null)
   ).Select(y => new { y.Pre_number })
   .Distinct().ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...