Linq left join значение null

139
15 января 2020, 23:10

Есть SQl запрос(пример), который возвращает нужный мне результат:

select * from visitedpoints
left join [dbo].[Routes] r ON visitedpoints.code = r.tocode and r.Shift_Id = visitedpoints.Shift_Id
where visitedpoints.Shift_Id = '184'
order by visitedpoints.serialnumber  

Вот Linq, который возвращает тоже что мне надо как и верхний SQL.

var result = from v in _shift.VisitedPoints
             join rs in _shift.Routes on v.Code equals rs.ToCode into rr
             from r in rr.DefaultIfEmpty(new Route())
             orderby v.SerialNumber
             select new VisitedPointRow
             {
                 Code = v.Code,
                 CityName = r.ToCityName,
                 Name = r.ToName,
                 DetourKMs = v.SerialNumber == 1 ? null : r.DetourKMs,
                 KGsTransported = v.SerialNumber == 1 ? null : r.KGsTransported,
                 PalletsTransported = v.SerialNumber == 1 ? null : r.PalletsTransported,
                 SerialNumber = v.SerialNumber,
                 ArrivalTime = v.ArrivalTime,
                 DepartureTime = v.DepartureTime,
                 Distance = v.SerialNumber == 1 ? null : r.Distance
             };  

Как мне сделать тоже самое но такого вида:

List<VisitedPointRow> visitedPoints = _shift.VisitedPoints
    .OrderBy(v => v.SerialNumber)
    .Join(_shift.Routes,
    v => v.Code,
    r => r.ToCode,
    (v, r) => new VisitedPointRow
    {
        Code = v.Code,
        CityName = r.ToCityName,
        Name = r.ToName,
        DetourKMs = v.SerialNumber == 1 ? null : r.DetourKMs,
        KGsTransported = v.SerialNumber == 1 ? null : r.KGsTransported,
        PalletsTransported = v.SerialNumber == 1 ? null : r.PalletsTransported,
        SerialNumber = v.SerialNumber,
        ArrivalTime = v.ArrivalTime,
        DepartureTime = v.DepartureTime,
        Distance = v.SerialNumber == 1 ? null : r.Distance
    })
    .ToList();  

Результат левой части и правой части из двух первых примеров:

10023   NULL
398     398
532     532
377     377
7058    7058
15155   15155  

Результат последнего:

398     398
532     532
377     377
7058    7058
15155   15155
READ ALSO
c# Неадекватно запускается файл

c# Неадекватно запускается файл

Столкнулся со странной проблемой

149
узнать какие есть столбцы в dataGridView?

узнать какие есть столбцы в dataGridView?

Мне нужно узнать какие столбцы есть в dataGridView

108
Как присвоить новый &#39;ID&#39; в базе

Как присвоить новый 'ID' в базе

Есть большая база MS ACCESS у которой создатель решил поставить во всех таблицах тип поля 'ID' как числовой, изменить нельзя тк

135
Реализация компьютера в игре

Реализация компьютера в игре

В ходе разработки игры столкнулся с задачей реализации не то чтобы компьютера, а внутриигровой операционной системыЭто не главная задача...

144