Linq to sql動態(tài)查詢概述
筆者對Linq to sql動態(tài)查詢的實現(xiàn)方法不是很精通,但是筆者一直在鉆研Linq to sql動態(tài)查詢,有了一點點收獲,拿出來和大家分享。
Linq to sql動態(tài)查詢確實是一件頭痛的事情,用表達(dá)式樹或反射方法要寫一大堆代碼,有時候想想與其這么復(fù)雜,還不如回到手動sql拼接的年代,但是技術(shù)總是向前發(fā)展的,終歸還是要在Linq上解決這一問題,無意在網(wǎng)上發(fā)現(xiàn)一個還算比較簡單的辦法,分享一下:
- void ShowData()
- {
- using (DBDataContext db = new DBDataContext(Database.ConnectionString))
- {
- Expression<Func<T_Bargin, bool>> expr = n => GetCondition(n);
- var _query = db.T_Bargins.Where<T_Bargin>(expr.Compile()).
- Select(b => new { b.F_Money, b.F_Name });
- foreach (var item in _query)
- {
- Response.Write(item.F_Name + " " + item.F_Money.ToString() +
- "<br/>");
- }
- }
- }
VB和C#的DynamicQuery例程都包括了一個輔助庫的源碼實現(xiàn),該輔助庫允許你使用接受字符串參數(shù)(而不是類安全的語言運算符)的擴展方法來表示LINQ查詢。你可以把C#或VB的DynamicQuery庫的實現(xiàn)拷貝到你自己的項目中,然后在適當(dāng)?shù)牡胤礁鶕?jù)用戶的輸入用它來構(gòu)建Linq to sql動態(tài)查詢。
Linq to sql動態(tài)查詢實現(xiàn)得到合同金額大于6000,或合同名稱中包含"應(yīng)"字的條件
- private bool GetCondition(T_Bargin _Table)
- {
- bool _result = false;
- decimal _MinMoney = 6000;
- if (_MinMoney > 0)
- {
- _result |= _Table.F_Money >= _MinMoney;
- }
- string _Name = "江華";
- if (!String.IsNullOrEmpty(_Name))
- {
- _result |= _Table.F_Name.Contains(_Name);
- }
- return _result;
- }
以上就是對Linq to sql動態(tài)查詢的簡單介紹。
【編輯推薦】


















