0
我有一個應用程序可以搜索我們的數據庫(通過EF公開)來查找滿足特定條件的記錄。我們有兩個主表(工作和收件人)。收件人通過作業ID鏈接到作業表。查詢中的Where子句
作業記錄包含各種字段(處理日期,名稱,作業類型)。收件人有很多姓名和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對象嗎?是否有可能返回作業和收件人對象?
例如如果我做了一個選擇收件人。 ,工作。 from .... blah這個解析是否正確並返回鏈接的Recipient和Job對象?
所以,如果我保持通話query.where並添加新的函數,它們會被類似於SQL中的「和」嗎? E.g name = john和date = @date。有沒有辦法指定他們作爲or加入? – Dane 2012-04-25 07:51:22
1)是的。 (請記住'Query ='部分,不要只調用Query.Where'並忽略結果。)從概念上講,Query = Query.Where(a).Where(b).Where(c)'does(僞代碼)Query =(select * from(select * from(select * from Query where a)where b)where c)',but that results with results'Query =(select * from Query where && b && c)',EF通常會這樣翻譯它。 2)你可以使用'聯合'這個。 Query.Where(a).Union(Query.Where(b))'給出與Query.Where(a‖b)'相同的結果。 – hvd 2012-04-25 08:01:19