ADO.Net Entity Framework : (七) 多條件查詢

ADO.Net Entity Framework : (七) 多條件查詢

在設計表單的時候,我們常常會讓使用者去選擇要輸入哪些資料,
然後把條件組合起來去查詢資料,這邊示範兩種利用EntityFramework的多條件查詢寫法

第一種 是利用StingBuilder把字串加起來,這應該也是大家最常用的寫法,
不過這方法要自己知道欄位名稱,也無法在設計階段就知道有沒有錯誤,
當然也沒有IntellSence

        ////示範:多條件查詢
        using (TestEntities te = new TestEntities())
        {
            ////寫法一
            StringBuilder sb = new StringBuilder();
                        
            if (!string.IsNullOrEmpty(TextBoxId.Text))
            {
                sb.Append(" and it.user_id = " + TextBoxId.Text);                
            }
                        
            if (!string.IsNullOrEmpty(TextBoxName.Text))
            {
                sb.Append(" and it.user_name = '" + TextBoxName.Text + "'");
            }

            if (!string.IsNullOrEmpty(TextBoxAddress.Text))
            {
                sb.Append(" and it.user_address = '" + TextBoxAddress.Text + "'");
            }

            List<user> users;

            ////取得資料
            if (sb.Length != 0)
            {                
                users = te.user.Where(sb.ToString().Substring(4)).ToList();
            }
            else
            {
                users = te.user.Select(a => a).ToList();
            }

            GridView1.DataSource = users;
            GridView1.DataBind();
        }

 

第二種 是利用 Linq 的特性,在下達Select語法後,可以繼續串連Where語法
讓多條件查詢變得更簡單,有Interllsence,並且在設計階段就可以知道語法有沒有錯

        ////示範:多條件查詢
        using (TestEntities te = new TestEntities())
        {
            ////寫法二
            
            ////先設定查詢物件
            var users = te.user.Select(a => a);
                       
            if (!string.IsNullOrEmpty(TextBoxId.Text))
            {
                int id = int.Parse(TextBoxId.Text);
                users = users.Where(a => a.user_id == id);
            }
            
            if (!string.IsNullOrEmpty(TextBoxName.Text))
            {
                users = users.Where(a => a.user_name == TextBoxName.Text);
            }

            if (!string.IsNullOrEmpty(TextBoxAddress.Text))
            {
                users = users.Where(a => a.user_address == TextBoxAddress.Text);
            }           

            GridView1.DataSource = users;
            GridView1.DataBind();
        }

 

在導入 EntityFramework 或 Linq to Sql 後,對資料庫的查詢及操作變得更簡單快速了,
之後有機會在來分享一下 EntityFramework 更進階的應用,像是 關聯式資料查詢、物件間的傳遞、如何利用 Entity Framework 實做三層式架構 等,
希望可以有更多人導入並一起研究討論囉~~




 


 

  • 如果您覺得這篇文章有幫助,請您幫忙推薦一下或按上方的""給予支持,非常感激
  • 歡迎轉載,但請註明出處
  • 文章內容多是自己找資料學習到的心得,如有不詳盡或錯誤的地方,請多多指教,謝謝