Linq to SQL запрос с COALESCE в предложении где - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь преобразовать следующий sql запрос в linq в sql (для структуры сущностей)

  select A.*, B.* from TABLE1 A
                   left join TABLE2 B
                  on A.LocationLoadPositionId = B.FkLocationLoadPositionId
                  where COALESCE(B.UploadStatus,0) = 0 

Пока я дошел до этого:

var positions = (from a in dbContext.TABLE1 join b in dbContext.TABLE2
                   on a.LocationLoadPositionId equals b.FkLocationLoadPositionId into c from d in c.DefaultIfEmpty()
                     where d.UploadStatus == false select new { a, d }).ToList();

Вышеупомянутый запрос linq, похоже, не работает должным образом из-за моего условия "где ..." Я получаю разные результаты для двух запросов выше ... что мне здесь не хватает? ...

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Попробуйте это:

var positions = (from a in dbContext.TABLE1 join b in dbContext.TABLE2
                   on a.LocationLoadPositionId equals b.FkLocationLoadPositionId into c from d in c.DefaultIfEmpty()
                     where d.UploadStatus == false || d == null select new { a, d }).ToList();
0 голосов
/ 28 апреля 2020

Что-то вроде ..

var positions = (from a in dbContext.TABLE1
                 join b in dbContext.TABLE2
                 on a.LocationLoadPositionId equals b.FkLocationLoadPositionId into c
                 let x = d.UploadStatus == 0 //<--- COALESCE
                 from d in c.DefaultIfEmpty()
                 where x == true).ToList();
return query.ToList();
...