查询中的可选Where子句

时间:2012-04-25 06:59:27

标签: .net vb.net entity-framework objectquery

我有一个应用程序可以搜索我们的数据库(通过EF公开)以查找满足特定条件的记录。我们有两个主要表(作业和收件人)。收件人通过作业ID链接到作业表。

作业记录包含各种字段(处理日期,名称,作业类型)。收件人有很多姓名和ID字段(例如帐号,姓氏等)

我想在搜索屏幕上显示要搜索的字段列表。然后,ASP.net代码会查看用户键入(或选择)的文本框,并根据该文本框构建查询。

我只是想找到最有效的方式。

粗略的逻辑是:

    if not string.isnullorempty(txtName.text) then
        'Query.Where.Add clause = " AND Name like '@txtName'
        'Query.WhereParameters.Add("@txtName",txtNAme.text
    end if

if not string.isnullorempty(txtAccountNumber.text) then 

.....etc


 if not string.isnullorempty(txtFromDate.text) then..

我遇到的问题是如何添加其他where子句。我应该只使用Entity SQL吗?

这可以返回强类型的EF对象吗?是否可以返回作业和收件人对象?

e.g。如果我做了一个选择的收件人。,jobs。来自......等等,这会正确解析并返回链接的收件人和工作对象吗?

1 个答案:

答案 0 :(得分:2)

如果您从强类型未过滤查询开始,则可以使用Queryable.Where添加过滤器。

Name = txtName.Text
If Not String.IsNullOrEmpty(Name) Then
    Query = Query.Where(Function(j) j.Name.Contains(Name))
End If

如果您的未过滤查询正确链接了多个记录,则在添加过滤器时将保留这些链接。

(免责声明:我通常不使用VB.NET;可能存在愚蠢的语法错误,但您应该能够得到一般的想法。)