Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将t-sql查询转换为linq_C#_Sql_Linq_Tsql_Sql To Linq Conversion - Fatal编程技术网

C# 将t-sql查询转换为linq

C# 将t-sql查询转换为linq,c#,sql,linq,tsql,sql-to-linq-conversion,C#,Sql,Linq,Tsql,Sql To Linq Conversion,我有这个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.fiel

我有这个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)

有什么帮助吗?

只要所有的表都是相关的,并且您不需要在LINQ中执行,因此它将类似于:

     var result = db.table1.WHERE(p=>p.table2.field4 == 4 && p.field1 == 125325 
     && p.field5 == 0 && p.table3 != null)
其中
db
-是您的
DbContext
ObjectContext
查询:

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);

table1
table3
相关吗?可能重复:是的,table1和table3相关。大卫,是什么阻止了[in]。你需要什么味道的LINQ?我们是在说.net吗?如果是vb或c#?