Застрял на LINQ to SQL Query - PullRequest
       1

Застрял на LINQ to SQL Query

0 голосов
/ 07 июля 2010

Не могу перевести это на LINQ:

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

Ответы [ 2 ]

1 голос
/ 07 июля 2010

Да, мне тоже никогда не везло.Для соединений я делаю

(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
}
1 голос
/ 07 июля 2010

Получите себе копию Linqer (www.sqltolinq.com). Он переведет почти любой оператор T-SQL в Linq. Это не бесплатно, но это не дорого. И у вас есть 30-дневная пробная версия.

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