2010-07-07 112 views
0

我似乎無法在這個轉換爲LINQ:憋屈LINQ到SQL查詢

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 

我有以下的左外連接的例子很難。他們沒有解釋發生了什麼,只是在他們的假設情況下做什麼。任何幫助/解釋將不勝感激。

下面是我如何開始,最後一行(來自JoinedFiles.DefaultIfEmpty()中的文件)不會讓我編譯。 '類型推斷在電話'SelectMany'中說失敗。爲什麼這麼複雜? =(

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() 
    ...? 

回答

1

是啊,我從來沒有多少運氣無論是對於加入我做

(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

我用過這個,不是我所要求的,但我更喜歡它,更容易理解wh在繼續。 – Jason 2010-07-07 19:49:22

1

讓自己Linqer(www.sqltolinq.com)的副本,它會轉化幾乎所有的T-SQL語句的LINQ,它不是免費的,但它並不昂貴,而且你有30天的審判。

+0

雖然我很欣賞這極大,它並沒有解決我的理解問題。由於壽,我要去試試這個+1 – Jason 2010-07-07 16:15:10