2010-04-15 74 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