2010-12-15 6 views
0

S'il vous plaît, dites-moi comment convertir cette requête SQL dans LINQ To SQL? Merci d'avance.Requête SQL LINQ To équivalent 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] 

Répondre

1

Quelque chose comme ça? (Attention, le code suivant est non testé!)

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

Merci! Ceci est exactement ce que je cherchais. –

1

En a previous question, quelqu'un a suggéré Linqer.

Je ne l'ai jamais utilisé moi-même, honnêtement, mais j'ai beaucoup utilisé LinqPad. Il fait le contraire (ainsi que la conversion de LINQ en expressions lambda), et est l'un de mes outils préférés.

+0

Merci pour votre réponse. J'ai essayé le Linqer, mais pour une requête donnée, il a généré une solution très difficile, qui s'exécute beaucoup plus longtemps que la requête SQL. –

+0

Je vérifierais la requête Linqer dans LinqPad pour voir si le SQL généré à partir de cette instruction LINQ correspondait réellement à la requête SQL que vous avez fournie ci-dessus. – jwiscarson