Преобразование запроса t-sql в linq

У меня есть этот запрос 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)

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


person Amr Elnashar    schedule 11.06.2013    source источник
comment
Связаны ли table1 и table3?   -  person STLDev    schedule 11.06.2013
comment
Возможный дубликат: stackoverflow.com/questions/3217669/   -  person David    schedule 11.06.2013
comment
да, table1 и table3 связаны.   -  person Amr Elnashar    schedule 11.06.2013
comment
Дэвид, что остановило [в].   -  person Amr Elnashar    schedule 11.06.2013
comment
Какой вкус LINQ вам нужен? Мы говорим о .net? А если так vb или c #?   -  person twoleggedhorse    schedule 11.06.2013
comment
Покажите модель данных. Скажите, какой вариант linq вы используете. Покажи, что ты пробовал. Расскажите, почему у вас не получилось. StackOverflow - это не выносное окно.   -  person Gert Arnold    schedule 11.06.2013


Ответы (2)


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

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

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

person Uriil    schedule 11.06.2013

Запрос:

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);
person lisp    schedule 11.06.2013