【问题标题】:Convert SQL to LINQ/EF将 SQL 转换为 LINQ/EF
【发布时间】:2018-10-29 16:52:55
【问题描述】:

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

不确定如何添加子查询

【问题讨论】:

  • 您的问题被否决了,因为您没有表现出任何努力。至少展示您尝试过的内容和遇到的错误,或者为什么行为不符合您的预期。
  • 与我们分享您的尝试,我们很乐意提供帮助。我们还需要查看您的架构和模型。没有这些东西,你的问题可能会被关闭,因为现在这听起来像是一个“给我代码”的问题,而且这些问题永远不会很好地解决。

标签: sql sql-server entity-framework linq


【解决方案1】:

你可以很容易地写成:

var result = ctx.VersionHistory
  .Where(vh => ctx.StylesHistory
         .Any( sh => sh.OptionsId == vh.Id &&
                sh.OptionsId == 28286 &&
                sh.ConId = 540 &&
                sh.ModifiedAtVersion > 1));

【讨论】:

    【解决方案2】:

    您还可以将子查询创建为另一个 IEnumerable,您将在主查询中使用它。

    这将提高可读性。

    EF 只会生成一个查询。

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多