2011-03-07 51 views
0

嗨,專家 我有一個關於動態Linq to Sql的特殊問題。 考慮我們要根據兩個字段* (LetterNo(字符串)和LetterDate(日期時間)) * 在表中進行搜索。問題是用戶可以輸入該字段或甚至兩者。動態查詢使用Linq To SQL根據多個字段

我搜索在互聯網上,發現ScottGu「Linq.Dynamic」庫該庫weblog.but如果我們要使用的SqlParameter在導出的命令,我們應該使用@ 0PARAM爲that.problem是我不知道用戶輸入了多少個字段。

我想要使用一個查詢,並且沒有像「Linq Kit PredicateBuilder」這樣的外部工具。

如果我手動創建我的查詢字符串(並執行使用ExecuteCommand),那麼我會放棄SqlParameter和Sql Injenction成長的風險。 如何做到這一點? 感謝

+0

你可以重構你的問題的可讀性?這只是一個大段落。還要補充你已經有的那些不起作用的東西。 – 2011-03-07 10:45:29

回答

1

我懷疑你是想這樣做的以下內容:

IQueryable<Letter> query = context.Letters; 
if (!string.IsNullOrEmpty(LetterNo)) 
    query = query.Where(letter => letter.LetterNo == LetterNo); 
If (LetterDate.HasValue) 
    query = query.Where(letter => letter.LetterDate == LetterDate); 

當您執行查詢時,它會結合必要的表情併發出一個查詢,以基於用戶的輸入數據庫。