本文共 1610 字,大约阅读时间需要 5 分钟。
對于頁面多個條件的查詢,我們可以利用EF的 Where連續分句.
例如下圖多條件的查詢,利用 Where 連續語句則明顯簡潔.using (ADMEntities entis = new ADMEntities()) { tbQueryRt = entis.vw_JobReg.Where(o => (quotNo == "" ? true : o.QuotNo.Contains(quotNo))) .Where(o => (contMan == "" ? true : o.Site_Contact_Person.Contains(contMan))) .Where(o => (jobNo == "" ? true : o.JobNo.Contains(jobNo))) .Where(o => (wiNO == "" ? true : o.WINo.Contains(wiNO))) .Where(o => (testType == "" ? true : o.Test_Type.Contains(testType))) .Where(o => (status == "" ? true : o.Status.Contains(status))) .Where(o => (desc == "" ? true : o.Job_Description.Contains(desc))) .Where(o => (client == "" ? true : o.Client.Contains(client))) .Where(o => (location == "" ? true : o.Job_Location.Contains(location))) .Where(o => (remarks == "" ? true : o.Remarks.Contains(remarks))) .Where(o => (dateFrom == "" ? true : rbOrderDate.Checked ? o.Order_Date >= dFrom : rbTestDate.Checked ? o.Test_Date_From >= dFrom : true)) .Where(o => (dateTo == "" ? true : rbOrderDate.Checked ? o.Order_Date <= dTo : rbTestDate.Checked ? o.Test_Date_From <= dTo : true)) .ToList().ToDataTable(); }
上述每一個Where分句,當對應的條件為空時,如下圖所示,linq 轉為sql 后,是不會生成對應的sql 條件語句.(下面第二個where分句不會生成sql)
转载地址:http://cpmdi.baihongyu.com/