【问题标题】:SQL query LINQ To SQL equivalentSQL 查询 LINQ To SQL 等效
【发布时间】:2010-12-15 18:30:41
【问题描述】:

请告诉我如何在 LINQ To SQL 中转换这个 SQL 查询?提前致谢。

SELECT [Movies].[Name]
FROM
(
    SELECT [Value]
    FROM [Index]
    WHERE ('WORD1' = [Word] and [MatchCount] = 1) 
    OR    ([Word] = 'WORD2' AND [MatchCount] = 1)
    GROUP BY [Value]
    HAVING COUNT([Value]) = 2
) AS [Guids]
LEFT OUTER JOIN [Movies] ON [Movies].[Guid] = [Guids].[Value]

【问题讨论】:

    标签: .net sql linq linq-to-sql


    【解决方案1】:

    这样的? (警告,以下代码未经测试!)

    var q = from i in Index
      where i.MatchCount == 1 &&
      (i.Word == "WORD1" || i.Word == "WORD2")
      group i by i.Value into g
      where g.Count() == 2
      from m in Movies.Where(x => x.Guid == g.Key).DefaultIfEmpty()
      select m.Name;
    

    【讨论】:

    • 谢谢!这正是我想要的。
    【解决方案2】:

    a previous question,有人建议Linqer

    老实说,我自己从未使用过它,但我已经广泛使用了LinqPad。它做相反的事情(以及将 LINQ 转换为 lambda 表达式),并且是我最喜欢的工具之一。

    【讨论】:

    • 感谢您的回复。我尝试了 Linqer,但是对于给定的查询,它生成了一个非常困难的解决方案,它的执行时间比 SQL 查询长得多。
    • 我会在 LinqPad 中验证 Linqer 查询,以查看从该 LINQ 语句生成的 SQL 是否实际上与您在上面提供的 SQL 查询匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    相关资源
    最近更新 更多