2013-06-11 3 views
-2

У меня есть эта T-SQL запрос, и мне нужно, чтобы преобразовать его в LinqConvert T-SQL-запрос к Linq

SELECT m.field1 
      FROM table1 m 
      Join table2 v on v.field1 = m.field1 and v.field2 = m.field3 
      WHERE v.field4 =4 
      AND m.field1=125325 
      AND m.field5=0 
      AND m.field1 IN (SELECT field1 FROM table3) 

любая помощь?

+0

Связаны ли 'table1' и' table3'? – STLDeveloper

+0

Возможный дубликат: http://stackoverflow.com/questions/3217669/how-to-do-a-join-in-linq-to-sql-with-method-syntax – David

+0

yes table1 и table3 related. –

ответ

1

Пока все таблицы связаны между собой, и вам не нужно делать соотношений LINQ, так что это будет что-то вроде:

 var result = db.table1.WHERE(p=>p.table2.field4 == 4 && p.field1 == 125325 
    && p.field5 == 0 && p.table3 != null) 

Где db - это ваш DbContext или ObjectContext

1

Запрос :

from m in db.table1 
join v in db.table2 
on new { m.field1, Field2 = m.field2 } 
equals new { v.field1, Field2 = m.field3 } 
where ... 
where db.table3.Select(x => x.field1).Contains(m.field1) 
select m.field1; 

Метод цепь:

db.table1 
    .Join(
     db.table2, 
     m => new {m.field1, Field2 = m.field2}, 
     v => new {v.field1, Field2 = m.field3}, 
     (m, v) => new {m, v}) 
    .Where(...) 
    .Where(t => db.table3.Select(x => x.field1).Contains(t.m.field1)) 
    .Select(t => t.m.field1); 
Смежные вопросы