iT邦幫忙

0

Linq to SQL 問題

各位高手午安
想請問大家,目前寫了一隻員工查詢系統
我下的條件是必須輸入id + name 才能找到資料
請問如果我只想輸入id 或 name 其中一個就能找到資料的話 LinQ該怎麼改

我嘗試下過

var q = from p in db.employee 
where p.name == name || p.id == id
select p;

但是變成name找不到資料 只有id找的到資料

https://ithelp.ithome.com.tw/upload/images/20210611/2013664631w8Ff1c7g.pnghttps://ithelp.ithome.com.tw/upload/images/20210611/20136646HOffUFeAKT.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
石頭
iT邦高手 1 級 ‧ 2021-06-11 13:29:20
最佳解答

按照你的描述 你可以在判斷那邊 判斷預設值就忽略此條件

var q = from p in db.employee 
where (p.name == name || string.IsNullOrEmpty(name)) && 
      (p.id == id || string.IsNullOrEmpty(id))
select p;

好的謝謝您,最後成功了!

0
japhenchen
iT邦超人 1 級 ‧ 2021-06-11 12:32:39

避免因資料以匯入方式建的記錄有不明空白,你可以試試

var q = from p in db.employee 
where p.name.Contains(name.Trim()) || p.id == id
select p;

謝謝高手幫忙,嘗試過後成功!

0
小魚
iT邦大師 1 級 ‧ 2021-06-11 13:12:49

如果還要加判斷可能用另外一種Linq會比較適合,
像這樣

var q = p.Where(x => x.ip == ip)

之類的.

好的謝謝你,這種方法比較不熟,再嘗試看看

0
Floralt 昀翰
iT邦新手 4 級 ‧ 2021-06-12 05:36:06

其實你最上面嘗試過的那段沒問題
建議你再檢查看看

好的謝謝你的幫忙!

我要發表回答

立即登入回答