具有多个表的C#谓词构建器

时间:2019-03-22 13:54:50

标签: c# predicatebuilder

我有2个表,Receipts包含IdInvoiceId等列,而Invoices包含IdInvoiceNoRevisionNo。一张收据可以有多个发票。因此,在我的收据清单页面上,有一个名为InvoiceSet的列,它将以逗号分隔的方式显示(InvoiceNo + RevisionNo)的列表

例如:2000155 A, 200111 B

在单列中。我的列表页面上方有一个搜索字段,用户可以在其中使用关键字搜索整个列表。为此,我正在使用predicatebuilder。因此,当用户搜索 200111 B 时,列表应进行过滤并显示具有给定搜索关键字的行。由于给定的搜索关键字是发票表中的invoiceNo和RevisionNo的组合(200111 = invoiceno,B = RevisionNo),因此我无法构建可以使用predicatebuilder组合两列的谓词。

我尝试过这样:

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

但这给了我错误提示

  

无法将lambda表达式转换为预期的委托类型,因为   块中的某些返回类型不是隐式可转换的   委托返回类型

InvoiceNo和RevisinNo均为字符串类型

predicatebuilder是否可以实现我正在寻找的东西?

1 个答案:

答案 0 :(得分:0)

应该是:

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