将 SQL 重写为 LINQ [重复]
Posted
技术标签:
【中文标题】将 SQL 重写为 LINQ [重复]【英文标题】:Rewriting SQL to LINQ [duplicate] 【发布时间】:2016-07-23 11:59:16 【问题描述】:我对 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
;
【问题讨论】:
【参考方案1】: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);
【讨论】:
在第一次查询中,我在 x.typ == typMoneta 上遇到错误,提示我:当前上下文中不存在名称“x” 查询没问题,但在 dataGridView1.DataSource = test 时出现错误;我知道我不能这样做,但我不知道其他人^以上是关于将 SQL 重写为 LINQ [重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 Linq 中的 NHibernate 应用程序重写为 SQL
LINQ 和 SQL 中看似等效的查询返回不同的结果 [重复]