【问题标题】:I need help to Convert a SQL Statement to C# LINQ我需要帮助将 SQL 语句转换为 C# LINQ
【发布时间】:2019-11-04 14:13:48
【问题描述】:

我需要有关在 LINQ C# 代码中转换此 Select 语句的帮助

SELECT TagName 
from Tags 
Where TagId IN(
    SELECT TagId 
    from PresentationTags 
    Where PresentationId = 2
)

【问题讨论】:

  • 我想知道您的 SQL 是否经过深思熟虑。性能方面,看起来你应该做一个内部连接而不是一个子选择
  • 到目前为止你尝试了什么?
  • @bradbury9 这是不准确的。 IN 查询并不总是等价于JOIN 查询,查询优化器通常足够聪明,可以在它们等价时创建相同的执行计划。更多详情,请阅读this SO question and my answer to it.
  • 我建议查看:sqltolinq.com 以备将来查询
  • 如果您的 PresentationTags 和 Tags 在您的模型中是相关的,您可以使用 from t in Tags where t.PresentationTags.PresentationId == 2 select t.TagName。请注意,我没有将其添加为答案,因为我缺少您的模型信息。

标签: c# sql linq sql-to-linq-conversion


【解决方案1】:

Where() 嵌套 Any() 应该可以完成这项工作

context.Tags.Where(
    x => context.PresentationTags.Any(
        y => y.PresentationId == 2 && x.TagId == y.TagId
    )
).Select(x => x.TagName);

【讨论】:

  • 希望您不介意重新格式化 - 当您不必滚动时,它会更容易阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2020-06-18
  • 2022-08-12
  • 1970-01-01
相关资源
最近更新 更多