我想将此SQL查询转换为LINQ。但是我是EF的新手。请帮助
SQL查询
select * from VersionHistory where id in( select OptionsId from StylesHistory where ConId=540 and OptionsId = 28286 and ModifiedAtVersion>1)
TIA
我尝试过这样的事情
var stylesHistory = _context.VersionHistory
.Where(x => x.ModifiedAtVersion > 1
&& x.Id==28286
&& x.Contract.Id==540)
.ToList()
不确定如何添加子查询
答案 0 :(得分:1)
您可以轻松地将其写为:
var result = ctx.VersionHistory
.Where(vh => ctx.StylesHistory
.Any( sh => sh.OptionsId == vh.Id &&
sh.OptionsId == 28286 &&
sh.ConId = 540 &&
sh.ModifiedAtVersion > 1));
答案 1 :(得分:0)
您还可以将子查询创建为另一个IEnumerable,供您在主查询中使用。
这将提高可读性。
EF仅会生成一个查询。