具有多个表的 C# 谓词生成器
C# Predicate builder with multiple Tables
我有 2 个表,Receipts
包含 Id
、InvoiceId
等列和 Invoices
,其中包含 Id
、InvoiceNo
, RevisionNo
.一个收据可以有多个发票。所以在我的收据列表页面中有一个名为 InvoiceSet
的列,它将以逗号分隔的方式显示 (InvoiceNo + RevisionNo
) 的列表
例如:2000155 A, 200111 B
在单列中。我的列表页面顶部有一个搜索字段,用户可以在其中使用关键字搜索整个列表。为此,我正在使用 predicatebuilder。因此,当用户搜索 200111 B 时,列表应该过滤并显示具有给定搜索键的行。由于给定的搜索键是来自 Invoice table 的 invoiceNo 和 RevisionNo (200111 = invoiceno, B = RevisionNo) 的组合,我无法构建一个可以使用 predicatebuilder 组合两列的谓词。
我这样试过:
p.Receipts.Any(a => a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value)
但它给我错误说明
Cannot convert lambda expression to intended delegate type because
some of the return types in the block are not implicitly convertible
to the delegate return type
InvoiceNo和RevisinNo都是字符串类型
predicatebuilder 是否有可能实现我正在寻找的东西?
应该是:
p.Receipts.Any(a => (a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value))
我有 2 个表,Receipts
包含 Id
、InvoiceId
等列和 Invoices
,其中包含 Id
、InvoiceNo
, RevisionNo
.一个收据可以有多个发票。所以在我的收据列表页面中有一个名为 InvoiceSet
的列,它将以逗号分隔的方式显示 (InvoiceNo + RevisionNo
) 的列表
例如:2000155 A, 200111 B
在单列中。我的列表页面顶部有一个搜索字段,用户可以在其中使用关键字搜索整个列表。为此,我正在使用 predicatebuilder。因此,当用户搜索 200111 B 时,列表应该过滤并显示具有给定搜索键的行。由于给定的搜索键是来自 Invoice table 的 invoiceNo 和 RevisionNo (200111 = invoiceno, B = RevisionNo) 的组合,我无法构建一个可以使用 predicatebuilder 组合两列的谓词。
我这样试过:
p.Receipts.Any(a => a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value)
但它给我错误说明
Cannot convert lambda expression to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type
InvoiceNo和RevisinNo都是字符串类型
predicatebuilder 是否有可能实现我正在寻找的东西?
应该是:
p.Receipts.Any(a => (a.Invoice.InvoiceNo + " " + a.Invoice.RevisionNo).Contains(criteria.Search.Value))