我是創建 LINQ 的新手,所以我很難將此 SQL 查詢轉換為 LINQ。有人能幫助我嗎
SELECT *
FROM myTable1
WHERE (Flag1 <> 'X' OR Flag2 != 'X' OR Flag3 != 'X')
AND number IN (SELECT externalid FROM db2.myTable2 WHERE item = 6)
這是我已經嘗試過的
//get external id
var externalNumber = from s in db2.myTable2
where s.item == 6
select externalid;
var query = from f in db1.myTable1
where (f.Flag1 != "X" || f.Flag2 != "X" || f.Flag3 != "X") && f.number == externalNumber
select f;
uj5u.com熱心網友回復:
直接翻譯是:
var query =
from f in db.myTable1
where (f.Flag1 != "X" || f.Flag2 != "X" || f.Flag3 !="X") &&
db.myTable2.Where(s => s.item == 6).Select(s => s.externalId).Contains(f.number)
select f;
IN 在 LINQ 中有模擬 Contains
uj5u.com熱心網友回復:
var externalid = db2.myTable2Repository.FirstOrDefault(f=>f.item == 2).Result.externalid;
第一個代碼從 db2.myTable2 回傳 externalid
var data = myTable1Repository.GetAll().Where(w=>(w.Flag1 != X || w.Flag2 != X || w.Flag3 != X) && w.number == externalid)
第二個代碼:GetAll() 是您的存盤庫(或 baseRepository)的方法,Where() 是 linq 的一部分
where -> (w.Flag1 != X || w.Flag2 != X || w.Flag3 != X) 的第一部分是自我解釋
第二部分 -> (&& w.number == externalid):我對 sql 不是很好,所以第二部分可能弄錯了,但是如果我理解正確,您可以根據另一個值檢查“number”屬性表,因此您可以查找此值并將其存盤在變數中。
如果我誤解了“和數字”中的第二部分,我很抱歉,我真的不擅長 SQL,而且我的英語也很差。
如果您有任何問題,我們在這里 :D
uj5u.com熱心網友回復:
試試下面的代碼:
DatabaseEntities dc=new DatabaseEntities();
var res=dc.myTable1.Where(s=>s.Flag <> 'X' || Flag2 !='X' || Flag3 !='X' && s.number.Contains(dc.myTable2.Where(m=>m.item==6)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381797.html
下一篇:Linq:選擇不同的物件左連接
