Построитель предикатов С# с несколькими таблицами

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

Eg : 2000155 A, 200111 B

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

Я пробовал так:

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

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

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

И InvoiceNo, и RevisinNo имеют строковый тип

Возможно ли с помощью predicatebuilder достичь того, что я ищу?


person Joker    schedule 22.03.2019    source источник
comment
лямбда в Any должна возвращать логическое значение. a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo не является логическим значением, это строка, поэтому ваша ошибка   -  person Liam    schedule 22.03.2019
comment
Я не могу не чувствовать, что этот вопрос содержит очень много лишней информации. Мне пришлось прочитать много текста, чтобы добраться до вашей фактической ошибки.   -  person Liam    schedule 22.03.2019
comment
@Liam Извините за такую ​​длинную информацию. искал нормальное общение. ответ есть, который я проверил, и он работает.   -  person Joker    schedule 22.03.2019


Ответы (1)


Должно ли это быть:

p.Receipts.Any(a => (a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value))
person Danko Durbić    schedule 22.03.2019
comment
ты рок-звезда... приму это как ответ еще через 5 минут - person Joker; 22.03.2019