2010-07-07 4 views
0

je ne peux pas sembler traduire à LINQ:Stuck on LINQ to SQL Query

select stuff 
    FROM history INNER JOIN profiles ON history.username = profiles.username 
    LEFT OUTER JOIN files ON history.fileid = files.filename 
    LEFT OUTER JOIN streams ON streams.identifier = history.fileid 
    LEFT OUTER JOIN galleries ON galleries.identifier = history.fileid, subscribers 
    WHERE stuff 

Je vais avoir du mal à suivre des exemples de jointures externes gauche. Ils n'expliquent pas ce qui se passe, juste ce qu'il faut faire dans leur situation hypothétique. Toute aide/explication serait très appréciée.

Voici comment j'ai commencé, la dernière ligne (à partir de fichiers dans JoinedFiles.DefaultIfEmpty()) ne me laissera pas compiler. 'L'inférence de type a échoué dans l'appel' SelectMany '. Pourquoi si compliqué? = (

var x = from h in db.Histories 
    join prof in db.profiles on h.username equals prof.username 
    join files in db.NeebitFiles on h.fileid equals files.filename into JoinedFiles 
    from files in JoinedFiles.DefaultIfEmpty() 
    ...? 

Répondre

1

Ouais, je ne l'ai jamais eu beaucoup de chance non plus. pour moi se joint à

(from a in db.A 
where ... 
select new 
{ 
    a.whatever, 
    (from b in db.B where B.AID = A.AID select b.value).First(), //first for inner join 
(from c in db.C where C.AID = A.AID select c.value).FirstOrDefault() //firstordefault for outer joins 
} 
+0

J'ai utilisé ceci, pas exactement ce que je demandais, mais je l'aime beaucoup mieux, beaucoup plus facile à comprendre. à se passe. – Jason

1

Procurez-vous une copie de Linqer (www.sqltolinq.com). Il se traduira presque toute déclaration T-SQL LINQ. Ce n'est pas libre, mais il est pas cher. Et vous avez un 30 jours procès.

+0

Bien que j'apprécie grandement ce, il ne traite pas ma question de compréhension. Merci tho, Im va essayer +1 – Jason