如何在MVC4中使用LINQ进行高效搜索?

时间:2016-10-19 09:58:06

标签: linq asp.net-mvc-4

您好我正在开发MVC4应用程序。我正在开发一个搜索页面,其中包含5个文本框和搜索按钮,其中只有一个文本框是必填字段。剩余不是强制性的。我想拥有所有5个文本框值的AND。我的查询如下。

var logDetails = (from c in db.ts_upldlog_content
join tbl in db.ts_upld_doc on c.upld_docid equals tbl.upld_docid
join doc in db.tm_doc_type on tbl.upld_doctypeid equals doc.doc_typeid
where 
(tbl.upld_clientid == clientId && tbl.upld_employeeid == employeeID && tbl.upld_empcitizenid == citizenId && tbl.upld_doctypeid == typeofDocument && EntityFunctions.TruncateTime(c.updatedOn) >= start && EntityFunctions.TruncateTime(c.updatedOn) < end)
    select new logdetails
    {
    //Getting all properties
    }).toList();

我的问题是在上面的查询中,start和end是必需的,所以我将从UI获得一些值。让我解释一个场景。用户将提供开始和结束,剩余将为空。我的查询不会产生结果,因为我正在做&amp;&amp;操作和我的其他字段可能在DB中有一些价值。 让我们考虑下表。

clientID    EmployeeID   EmpCitiID  docType      Date
123         456          456        1            10/19/2016

当我仅通过日期时,我的查询将无效,因为我正在做&amp;&amp;操作。那有没有办法实现这种情况?任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

tbl.upld_clientid == clientId && tbl.upld_employeeid == employeeID && tbl.upld_empcitizenid == citizenId && tbl.upld_doctypeid == typeofDocument && 

(EntityFunctions.TruncateTime(c.updatedOn) >= start && EntityFunctions.TruncateTime(c.updatedOn) < end )  )

缺少括号