2010-07-22 6 views
1

Je suis presque terminé la conversion d'une application MySQL pour Linq2SQL mais qui luttent pour obtenir ma tête autour de cette dernière requête SQLLinq 2 SQL Syntaxe Aide

SELECT a.URL, b.URL AS DuplicateURL 
FROM Pages a 
INNER JOIN Pages b ON a.MetaDescription = b.MetaDescription 
        AND a.PageID <> b.PageID 
WHERE a.DomainID = @reportid 
    AND b.DomainID = @reportid 
    AND LENGTH(TRIM(a.MetaDescription)) > 0 
    AND a.URL < b.URL 
ORDER BY a.URL ASC 

pourrait plus me donner un peu d'aide de la syntaxe sur la façon dont je voudrais créer cette requête dans Linq2SQL?

Toute aide grandement appréciée

+0

LINQ to SQL ne prend pas en charge les bases de données MySQL. Vous devrez également migrer vers MS SQL ou commencer à utiliser Entity Framework. – Steven

+0

Je n'utilise pas MySQL J'essaie d'utiliser Linq2SQL? Comme pour déplacer cette requête dans Linq, c'est pourquoi je demande de l'aide pour la syntaxe: S – leen3o

+0

Oui, mais LINQ to SQL ne peut PAS dialoguer avec une base de données MySQL. Vous déplacez également vos données dans une base de données Microsoft SQL? – Steven

Répondre

2

Il va comme ceci:

var DuplicatePages = 
    from a in DBContext.Pages 
    join b in DBContext.Pages on a.MetaDescription equals b.MetaDescription 
    where (a.PageID <> b.PageID) && (a.DomainID == ReportID) && 
    (b.DomainID == ReportID) && (a.MetaDescription.Trim().Length > 0) && 
    (a.URL < b.URL) 
    orderby a.URL 
    select new { Url = a.URL, DuplicateUrl = b.URL }; 
+0

Super merci ... J'adore cet endroit, j'apprends tellement !! – leen3o

2

C'est assez straigtforward:

var reportId = ...; 

var duplicates = 
    from a in db.Pages 
    from b in db.Pages 
    where a.MetaDescription == b.MetaDescription 
    where a.PageID != b.PageID 
    where a.DomainID == reportId 
    where b.DomainID == reportId 
    where a.MetaDescription.Trim().Length > 0 
    where a.URL < b.URL 
    orderby a.URL 
    select new { Url = a.URL, DuplicateUrl = b.Url } 
+0

Juste une question, 'a.MetaDescription.Trim(). Length' sera traduit en SQL d'accord? Je demande parce que je n'ai pas vérifié dans ma réponse. – Lazarus

+0

Je n'ai pas vérifié non plus, mais le fournisseur LINQ to SQL a un traducteur de requête assez solide, donc je suppose que cela fonctionne. Mais s'il vous plaît vérifier. – Steven

+1

Selon LINQPAD '.Trim(). Longueur>' est traduit en 'LEN (LTRIM (RTRIM (.)))>', Mais c'était pour une base de données que j'avais à portée de main, pas celle-ci. –