新文章

2012年9月10日 星期一

[C#]LINQ多個輸入條件查詢與SQL多條件查詢Part1


之前寫程式,習慣用SQL語法,自然也就習慣串字串,不過最近摸了EntityFramework與LINQ,又是另一片天地!


讓我對於繁複且麻煩SQL連線字串Say goodbye!LINQ+EF真的好好用!而且簡潔有力!

不過剛開始最常碰到的就是串資料,以前SQL玩習慣只要改string conn,都可以弄出想要的結果
在LINQ則要先搞清楚物件觀念,一開始確實苦惱了點!

拿最簡單的例子來談談:

使用EntityFramework搭配LINQ操作一個範例
介面提供輸入搜尋條件(多個TextBox) 帳號, 名稱, 組別
簡單寫一個

var edm = new userEntities();

var query = from a in edm.dev_user
            where (a.dev_user_account == accText.Text &
                    a.dev_user_name == userNameText.Text &
                    a.dev_groupID = userGroupID.Text)
                    select a;
這只能滿足當3個textBox都有值的情況下,若其中一個沒填,就找不到資料!
若是SQL我大概會這樣寫,用WHERE 1=1 去串

String sql = "select * from user where 1=1 ";

if (username != null) sql = sql + " and username='" + username + "'";

if (password != null) sql = sql + " and password='" + password + "'";
一開始有點沒頭緒,暫時先想一個解決辦法:

var query = from a in edm.dev_user

where
(!string.IsNullOrEmpty(userAccText.Text) ? userAccText.Text == a.dev_user_account : true) &&
(!string.IsNullOrEmpty(userNameText.Text) ? userNameText.Text == a.dev_user_name : true) &&
(!string.IsNullOrEmpty(userGroupID.Text) ? userGroupID.Text == a.dev_groupID : true)
select a;
大概是這樣!

沒有留言:

張貼留言