2010-04-15 73 views
1

我有一個sql語句,但我無法在linq中使用它。有人可以告訴我如何將下面的sql語句寫成linq嗎?將sql轉換爲linq示例

SELECT * FROM mobileApplication 
LEFT JOIN videoMobile ON mobileApplication.id = videoMobile.mobileApplicationId 
     AND videoMobile.videoId = 257 

這是一個左右連接,在右表上有一個where語句。它在sql server 2005中工作,但我想寫在linq中。

回答

0

有一個產品會爲你做這個。我發現它非常有用。產品名稱是Linqer。它不是免費的,但不貴,並提供30天的試用期。我發現很少的查詢是無法轉換的。它對我來說效果很好。

http://www.sqltolinq.com/ 
0

它是這樣的:

from ma in mobiledApplication.DefaultIfEmpty() 
join vm in videoMobile on new { mobileApplicationId = ma.id, videoId = 257 } equals new { mobileApplicationId = vm.mobileApplicationId, videoId = vm.videoId } into videoMobileApplication 
from vma in videoMobileApplication 
select vma 

的按鍵被默認如果在連接標準空,使用匿名對象納入257到加入。

我敢肯定,使用WHERE子句爲257,雖然會得到同樣的結果...

2

我沒有驗證語法,但試試這個...

var mobileApplications = from ma in mobileApplication 
         join vm in videoMobile on ma.id equals vm.mobileApplicationId into j1 
         from j2 in j1.DefaultIfEmpty() 
         where vm.videoId == 257 
         select ma; 
+0

此示例不能正常工作,不幸的是。如果我輸入一個有效的videoId(它存在於videoMobile表中),它會起作用,但如果它不存在,我不會得到任何結果。結果我想: 現有的視頻ID: 1 iPhone 260 sneakpeak - 非現有視頻ID: 1 iPhone NULL NULL – 2010-04-16 07:10:38