конвертировать sql в образец linq - PullRequest
1 голос
/ 15 апреля 2010

У меня есть SQL-оператор, но я не могу заставить его работать в linq. Может кто-нибудь показать мне, как я могу написать следующий SQL-оператор как linq?

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

Это левое соединение с оператором where в правой таблице. Он работает в SQL Server 2005, но я хотел бы написать это в linq.

Ответы [ 4 ]

2 голосов
/ 15 апреля 2010

Я не проверял синтаксис, но попробуйте это ...

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 голосов
/ 15 апреля 2010

Попробуйте что-то вроде этого:

var query = 
    from m in mobileApplication
    join v in videoMobile 
        on m.id = v.mobileApplicationId and v.id = 257
        select m;

Смотрите здесь:

http://msdn.microsoft.com/en-us/library/bb397676%28v=VS.100%29.aspx

http://msdn.microsoft.com/en-us/magazine/cc163400.aspx

0 голосов
/ 15 апреля 2010

Это что-то вроде:

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 приведет к тому же результату ...

0 голосов
/ 15 апреля 2010

Существует продукт, который сделает это за вас. Я нашел это очень полезным. Название продукта - Linqer. Это не бесплатно, но не дорого, и предлагает 30-дневную пробную версию. Я нашел очень мало запросов, которые он не может конвертировать. Это хорошо сработало для меня.

http://www.sqltolinq.com/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...