#c# #predicatebuilder
#c# #predicatebuilder
Вопрос:
У меня есть 2 таблицы, Receipts
которые содержат столбцы типа Id
, InvoiceId
и т.д. и Invoices
, которые содержат Id
, InvoiceNo
, RevisionNo
. Квитанция может содержать несколько счетов. Итак, на моей странице со списком поступлений есть столбец с именем, InvoiceSet
который будет отображать список ( InvoiceNo RevisionNo
) через запятую
Например : 2000155 A, 200111 B
в одном столбце. У меня есть поле поиска в верхней части страницы моего списка, где пользователь может выполнять поиск по всему списку, используя ключевые слова. Для этой цели я использую predicatebuilder. Таким образом, когда пользователь выполняет поиск 200111 B, список должен фильтроваться и показывать строку с заданным ключом поиска. Поскольку указанный ключ поиска представляет собой комбинацию InvoiceNo и RevisionNo (200111 = invoiceno, B = RevisionNo) из таблицы Invoice, я не могу создать предикат, который может объединять два столбца с помощью predicatebuilder.
Я пробовал вот так :
p.Receipts.Any(a => a.Invoice.InvoiceNo " " a.Invoice.RevisionNo).Contains(criteria.Search.Value)
но это выдает мне ошибку с указанием
Не удается преобразовать лямбда-выражение в предполагаемый тип делегата, поскольку некоторые из возвращаемых типов в блоке неявно преобразуются в возвращаемый тип делегата
Как InvoiceNo, так и RevisinNo имеют тип string
Возможно ли с помощью predicatebuilder достичь того, что я ищу?
Комментарии:
1. лямбда-выражение в
Any
должно возвращать логическое значение.a.Invoice.InvoiceNo " " a.Invoice.RevisionNo
это не логическое значение, это строка, отсюда и ваша ошибка2. Я не могу избавиться от ощущения, что этот вопрос содержит ужасно много лишней информации. Мне пришлось прочитать много текста, чтобы добраться до вашей фактической ошибки.
3. @Liam Извините за столь длинную информацию. искал правильное взаимодействие. ответ есть, я его протестировал, и он работает.
Ответ №1:
Должно ли это быть:
p.Receipts.Any(a => (a.Invoice.InvoiceNo " " a.Invoice.RevisionNo).Contains(criteria.Search.Value))
Комментарии:
1. ты рок-звезда… примет это как ответ через 5 минут