2010-12-15 104 views
0

请告诉我如何将这个SQL查询转换成LINQ To SQL?提前致谢。SQL查询LINQ To 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] 

回答

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; 
+0

谢谢!这正是我所期待的。 – 2010-12-16 03:19:47

1

a previous question,有人建议Linqer

我从来没有用过它,老实说,但我已经广泛使用LinqPad。它做相反的(以及转换LINQ到lambda表达式),并且是我最喜欢的工具之一。

+0

谢谢您的回复。我尝试了Linqer,但对于给定的查询,它生成了一个非常困难的解决方案,它比SQL查询执行时间要长得多。 – 2010-12-15 18:49:27

+0

我会在LinqPad中验证Linqer查询,以查看从该LINQ语句生成的SQL是否与您上面提供的SQL查询匹配。 – jwiscarson 2010-12-15 18:51:29