【发布时间】:2014-06-16 11:54:35
【问题描述】:
使用 EF6 + SQL Server 2008 R2 + .NET Fx 4.5。
我需要在我的实体及其相关实体的多个字段中搜索特定字符串,并返回在任何字段中找到搜索字符串的记录。以下是相关代码:
Dim Query = MyDB.items.AsQueryable()
Query = Query.Where(Function(r) _
r.stock_no.Contains(searchString) OrElse _
r.serial_number.Contains(searchString) OrElse _
r.catalog_item.description.Contains(searchString) OrElse _ r.catalog_item.category.Contains(searchString) OrElse _
r.item_status.name.Contains(searchString) OrElse _
r.notes.Contains(searchString))
If r.issued_to_company_id.HasValue Then 'This is a nullable field (0-1 relation)
Query = Query.OR_FUNCTION(Function(r) r.issued_to_company.name.Contains(searchString))
End If
问题是LINQ中没有OR_FUNCTION。您可以通过在 Query 对象上调用另一个 Where 来模拟可选的 AND_FUNCTION,但我需要在此处执行 OR。
我也尝试在谓词中使用If 和IIf,但如果不引入编译或运行时错误,似乎无法做到这一点。这样做的正确方法是什么?
【问题讨论】:
标签: vb.net linq entity-framework lambda