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 實做三層式架構 等,
希望可以有更多人導入並一起研究討論囉~~
- 如果您覺得這篇文章有幫助,請您幫忙推薦一下或按上方的"讚"給予支持,非常感激
- 歡迎轉載,但請註明出處
- 文章內容多是自己找資料學習到的心得,如有不詳盡或錯誤的地方,請多多指教,謝謝