将SQL转换为LINQ / EF

时间:2018-10-29 16:52:55

标签: sql sql-server entity-framework linq

我想将此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()

不确定如何添加子查询

2 个答案:

答案 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仅会生成一个查询。