Linq to sql動態查詢概述
筆者對Linq to sql動態查詢的實現方法不是很精通,但是筆者一直在鉆研Linq to sql動態查詢,有了一點點收獲,拿出來和大家分享。
Linq to sql動態查詢確實是一件頭痛的事情,用表達式樹或反射方法要寫一大堆代碼,有時候想想與其這么復雜,還不如回到手動sql拼接的年代,但是技術總是向前發展的,終歸還是要在Linq上解決這一問題,無意在網上發現一個還算比較簡單的辦法,分享一下:
- 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例程都包括了一個輔助庫的源碼實現,該輔助庫允許你使用接受字符串參數(而不是類安全的語言運算符)的擴展方法來表示LINQ查詢。你可以把C#或VB的DynamicQuery庫的實現拷貝到你自己的項目中,然后在適當的地方根據用戶的輸入用它來構建Linq to sql動態查詢。
Linq to sql動態查詢實現得到合同金額大于6000,或合同名稱中包含"應"字的條件
- 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動態查詢的簡單介紹。
【編輯推薦】