Linq Right Outer Join Query в C# MVC - PullRequest
       17

Linq Right Outer Join Query в C# MVC

1 голос
/ 09 марта 2020

Я хочу показать транспортные средства внутри и за пределами компании по запросу. В приведенном ниже запросе показаны автомобили снаружи и автомобили без учета результатов. Транспортные средства внутри и с записями отслеживания не видны.

Как это можно сделать с помощью одного запроса?

ТАБЛИЦ

enter image description here

ЗАПИСИ

enter image description here

QUERY

var VehiclesStatus = (from veh in db.Sec_Vehicle
                      join tracing in db.Sec_Tracing on veh.Id equals tracing.CarId into trc
                      from trace in trc.DefaultIfEmpty()
                      where trace.EntryDate == null || trace == null
                      orderby veh.Brand
                      select new VehicleStatus
                      {
                            Brand = veh.Brand,
                            Driver = trace != null ? trace.DriverName : string.Empty,
                            ReleaseDate = trace != null ? trace.ReleaseDate.ToString("HH:mm") : "",
                            Status = trace != null ? "Vehicle Busy" : "Vehicle Available"
                      }).ToList();

РЕЗУЛЬТАТ Я ХОЧУ enter image description here

спасибо, всего наилучшего.

1 Ответ

0 голосов
/ 09 марта 2020

Ваш запрос выглядит хорошо. Просто проблема в предложении where (where trace.EntryDate == null || trace == null).

Пример:

1. Если вам нужно условие WHERE, попробуйте -

var VehiclesStatus = (from veh in db.Sec_Vehicle
                      join tracing in db.Sec_Tracing on veh.Id equals tracing.CarId into trc
                      from trace in trc.Where(f => f.EntryDate== null).DefaultIfEmpty()//use :f.EntryDate== null if you need which has no EntryDate OR f.EntryDate!= null if you need which has EntryDate
                      orderby veh.Brand
                      select new VehicleStatus
                      {
                            Brand = veh.Brand,
                            Driver = trace != null ? trace.DriverName : string.Empty,
                            ReleaseDate = trace != null ? trace.ReleaseDate.ToString("HH:mm") : "",
                            Status = trace != null ? "Vehicle Busy" : "Vehicle Available"
                      }).ToList();

2. Без условия

var VehiclesStatus = (from veh in db.Sec_Vehicle
                      join tracing in db.Sec_Tracing on veh.Id equals tracing.CarId into trc
                      from trace in trc.DefaultIfEmpty()
                      orderby veh.Brand
                      select new VehicleStatus
                      {
                            Brand = veh.Brand,
                            Driver = trace != null ? trace.DriverName : string.Empty,
                            ReleaseDate = trace != null ? trace.ReleaseDate.ToString("HH:mm") : "",
                            Status = trace != null ? "Vehicle Busy" : "Vehicle Available"
                      }).ToList();
...