2011-08-31 170 views
1

我有下面的sql,我想用linq轉換爲C#。有人能告訴我如何用linq做到最好?如何將此sql轉換爲Linq C#

select A.field1, A.Field2, A.Field4, A.Field5, A.Field4 ,A.Field6 
from MPhoneParts A 

where A.Field3= 'Batteri' AND NOT EXIST(

select * from MPhoneParts B where 

B.Field3='cover' 
A.Field2= B.Field2 AND 
A.Field4= B.Field4 AND 
B.Field6='Production354') 

乾杯 邁克

回答

4

有可能是一個更好的方法(很可能使用加入...)但是:

var query = from a in db.MPhoneParts 
      where a.Field3 == "Batteri" && 
        !db.MPhoneParts.Any(b => b.Field3 == "cover" && 
              a.Field2 == b.Field2 && 
              a.Field4 == b.Field4 && 
              b.Field6 == "Production354") 
      select a; 
+0

使用現有的SQL表是兩個最有可能'db.MPhoneParts';顯示的查詢中的「A」和「B」只是別名 –

+0

@Marc:Doh,謝謝,編輯。 –

0

我想你的問題是拼寫錯誤,你的意思來檢查NOT IN條款。

這裏是如何寫NOT IN的解決方案......在LINQ,希望這有助於:

The NOT IN clause in LINQ to SQL

+0

是問題是存在拼寫錯誤,而不是退出 – Mike

0
var qry = 
    from a in db.PhoneParts 
    where a.Field3 == "Batteri" 
    && !db.PhoneParts.Any(b => 
      b.Field3 == "cover" 
      && b.Field6 == "Production354" 
      && b.Field2 == a.Field2 
      && b.Field4 == a.Field4) 
    select new { a.Field1, a.Field2, a.Field4, a.Field5, a.Field6 }; 

但想法:

  • Field1Field6可怕
  • 您可以通過db.ExecuteQuery
+0

是的,我不想公開我的實際數據庫字段,但非常感謝 – Mike