2016-07-23 30 views
0

我完全不熟悉LINQ,我想重写一些我的SQL查询到LINQ(只是为了学习),我已经在开始时卡住了。重写SQL到LINQ

这里是SQL查询:

declare @typMon varchar(200) 
set @typMon = 'moneta' 

select * 
from [db1].[dbo].[Picking] 
where number = 1000 
and Group IN (Select grupa 
       from [db2].[dbo].[groups] 
       where typ = @typMon) 

子查询返回3个输出行:http://i.stack.imgur.com/CDOwr.png

,这里是什么我心中已经写在LINQ

这部分工作正常:

var query = from x in db.grupyTowarowes 
      where x.typ == typMoneta 
      select new 
      { 
       x.grupa 
      }; 

问题是在这里:

var test = from z in dbContext.PICKINGs 
      where z.Number == 1000 
      && z.group IN output from 1st query 
      select new 
      { 
       z.id 
      }; 

回答

0
var test = from z in dbContext.TBL_CSV_PICKINGs 
      join g in db.grupyTowarowes on Z.group equals g.grupa 
      where z.Number == 1000 && 
      g.typ == typMoneta 
      select new { z.id }; 

还是在方法的语法

dbContext.TBL_CSV_PICKINGs 
    .Where(z => z.Number == 1000) 
    .Join(db.grupyTowarowes.Where(g => g.typ == typMoneta) 
     z => z.group, 
     g => g.grupa, 
     (z,g) => z.id); 
+0

在这第一个查询我上x.typ错误== typMoneta它说我:名称“X”并不在目前的情况下存在 – JustSomeNewbie

+0

查询是好的,但我得到错误while dataGridView1.DataSource = test;我知道我不能这样做,但我不知道其他人^ – JustSomeNewbie