C # Predicate Builder с несколькими таблицами - PullRequest
0 голосов
/ 22 марта 2019

У меня есть 2 таблицы, Receipts, которые содержат столбцы, такие как Id, InvoiceId и т. Д. И Invoices, которые содержат Id, InvoiceNo, RevisionNo. Квитанция может иметь несколько счетов. Так что на моей странице списка чеков есть столбец с именем InvoiceSet, в котором список (InvoiceNo + RevisionNo) будет отображаться через запятую

Например: 2000155 A, 200111 B

в одном столбце. У меня есть поле поиска в верхней части страницы моего списка, где пользователь может искать весь список, используя ключевые слова. Для этой цели я использую предикатный строитель. Поэтому, когда пользователь выполняет поиск 200111 B , список должен фильтроваться и показывать строку с указанным ключом поиска. Поскольку данный ключ поиска является комбинацией invoiceNo и RevisionNo (200111 = invoiceno, B = RevisionNo) из таблицы счетов-фактур, я не могу построить предикат, который может объединить два столбца, используя предикатный построитель.

Я пытался так:

p.Receipts.Any(a =>  a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value)

но это дает мне сообщение об ошибке

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

Тип InvoiceNo и RevisinNo имеет тип string

Возможно ли с помощью предиката построить то, что я ищу?

1 Ответ

0 голосов
/ 22 марта 2019

Должно быть:

p.Receipts.Any(a => (a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value))
...