【发布时间】:2019-03-22 21:59:49
【问题描述】:
我有 2 个表,Receipts,其中包含 Id、InvoiceId 等列和 Invoices,其中包含 Id、InvoiceNo、RevisionNo。一个收据可以有多个发票。因此,在我的收据列表页面中有一个名为 InvoiceSet 的列,它将以逗号分隔的方式显示 (InvoiceNo + RevisionNo) 的列表
例如:2000155 A, 200111 B
在单个列中。我的列表页面顶部有一个搜索字段,用户可以使用关键字搜索整个列表。为此,我正在使用谓词生成器。因此,当用户搜索 200111 B 时,列表应该过滤并显示具有给定搜索键的行。由于给定的搜索键是 Invoice 表中 invoiceNo 和 RevisionNo (200111 = invoiceno, B = RevisionNo) 的组合,因此我无法使用 predicatebuilder 构建可以组合两列的谓词。
我试过这样:
p.Receipts.Any(a => a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value)
但它给了我错误说明
无法将 lambda 表达式转换为预期的委托类型,因为 块中的某些返回类型不可隐式转换 到委托返回类型
InvoiceNo 和 RevisinNo 都是字符串类型
谓词构建器是否可以实现我正在寻找的东西?
【问题讨论】:
-
Any中的 lambda 应该返回一个布尔值。a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo不是布尔值,而是字符串,因此您的错误 -
我不禁觉得这个问题包含了大量的多余信息。我必须阅读大量文字才能找到您的实际错误。
-
@Liam 抱歉,信息太长了。正在寻找适当的沟通。答案就在那里,我已经测试过了,它正在工作。
标签: c# predicatebuilder