2011-08-31 101 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