Troy Bryant Ответов: 1

Как отфильтровать повторяющиеся строки


Привет -

Я использую entity framework linq query для извлечения моих данных. Проблема в том, что я получаю дубликаты строк номера счета-фактуры. Как мне устранить дубликаты строк?
Номер счета-фактуры дублируется для счетов-фактур, содержащих несколько позиций счета-фактуры.

Вот мой запрос

result = (from invoice in invoices
          join invoiceItem in invItems on invoice.Id equals invoiceItem.InvoiceId
          orderby invoice.InvoiceNo
          select new InvoiceReceiveShipmentVM
          {
              dtInvoiced = invoice.dtInvoiced,
              InvoiceNumber = invoice.InvoiceNo,
              InvoiceType = invoice.InvoiceType,
              InvoiceStatus = invoice.InvoiceStatus,
              Lines = invoiceItem.Line,
              Total = invoice.Total,
              Carrier = invoice.Carrier,
          });
return result.Distinct().AsQueryable();


Что я уже пробовал:

Я пробовал результат.Отчетливый().ToList() и я просматривал эту ссылку, чтобы найти что-то http://linq101.nilzorblog.com/linq101-lambda.php

Ehsan Sajjad

это ожидаемое поведение у вас есть несколько элементов против номера счета-фактуры, вам нужно написать логику на переднем конце для отображения его один раз может быть группировка их

Maciej Los

Ну, представьте себе: есть один счет - фактура со следующими свойствами: ID-5, No.: 5; и второй: ID-6, No.: 5. равны ли они?

Beginner Luck

вы хотите различать по какому столбцу

Troy Bryant

InvoiceNumber

Beginner Luck

Я не уверен, что это то, что вам нужно

Karthik_Mahalingam

если у вас есть несколько позиций счета-фактуры, то какой из них вы хотите игнорировать.
например:
Счет-фактура № 1
invoiceItem, имеющие 3-х элементов с одинаковым идентификатором счета-фактуры [1 .. значение ][1 ... какую-то ценность ] [ 1 .. какую-то ценность ]
в этом случае вы получите 3 записи, это то, как работает join, поэтому переходите к вашему отдельному вопросу, который вы хотите рассмотреть/проигнорировать в этих 3 пунктах.

Troy Bryant

В этом случае если номер счета один и тот же должен быть отображен первый все остальные счета с дубликатами номеров должны быть подписаны

1 Ответов

Рейтинг:
10

Beginner Luck

public static IEnumerable DistinctBy(this IEnumerable list, Func<t, object> propertySelector)

{

   return list.GroupBy(propertySelector).Select(x => x.First());

}


Попробуйте это полезное расширение

с этого сайта
LINQ DistinctBy - с параметром лямбда-выражения-одиннадцать ветров[^]


Maciej Los

Приятно! А5!