Hilfe Umwandlung Abfrage muss mit Verknüpfungen und Gruppe / zählen zu LINQ to SQL
-
06-07-2019 - |
Frage
Ich brauche Hilfe, diese Abfrage LINQ to SQL-Umwandlung:
select
rd.RouteDispatchID,
r.RouteNumber,
s.ShortDescription Status,
rd.DispatchDate,
rd.CreationDate CreatedDate,
e.FirstName,
e.LastName,
count(md.MachineDispatchID) NumMachines
from
dbo.RouteDispatch rd
inner join dbo.Route r on rd.RouteID = r.RouteID
inner join dbo.Reference s on rd.StatusCodeReferenceID = s.ReferenceID
inner join dbo.Employee e on rd.CreatedByEmployeeID = e.EmployeeID
left join dbo.MachineDispatch md on rd.RouteDispatchID = md.RouteDispatchID and md.IsSelected = 1
Hier ist, was ich bisher habe, aber ich kann nicht herausfinden, wie die Gruppe zu arbeiten, indem sie / Zählung zu bekommen und kann weder mein Linqer Werkzeug ...
var query = from rd in db.RouteDispatches
join r in db.Routes on rd.RouteID equals r.RouteID
join s in db.References on new { StatusCodeReferenceID = rd.StatusCodeReferenceID } equals new { StatusCodeReferenceID = s.ReferenceID }
join e in db.Employees on new { CreatedByEmployeeID = rd.CreatedByEmployeeID } equals new { CreatedByEmployeeID = e.EmployeeID }
join md in db.MachineDispatches
on new { RouteDispatchID = rd.RouteDispatchID, IsSelected = true }
equals new { RouteDispatchID = md.RouteDispatchID, IsSelected = md.IsSelected.Value } into md_join
from md in md_join.DefaultIfEmpty()
select new RouteView {
RouteDispatchID = rd.RouteDispatchID,
RouteNumber = r.RouteNumber,
Status = s.ShortDescription,
DispatchDate = rd.DispatchDate.Value,
CreatedDate = rd.CreationDate.Value,
FirstName = e.FirstName,
LastName= e.LastName,
NumMachines = 0//.Count()
};
Dank wer auch immer dies herausfinden kann, ich bin immer noch ein Neuling mit LINQ to SQL so ist kommen mit wie 2-3 neue Fragen pro Tag !! :)
Lösung
habe es funktioniert ...
var query = from rd in db.RouteDispatches
join r in db.Routes on rd.RouteID equals r.RouteID
join s in db.References on new { StatusCodeReferenceID = rd.StatusCodeReferenceID } equals new { StatusCodeReferenceID = s.ReferenceID }
join e in db.Employees on new { CreatedByEmployeeID = rd.CreatedByEmployeeID } equals new { CreatedByEmployeeID = e.EmployeeID }
join md in db.MachineDispatches
on new { RouteDispatchID = rd.RouteDispatchID, IsSelected = true }
equals new { RouteDispatchID = md.RouteDispatchID, IsSelected = md.IsSelected.Value } into md_join
from md in md_join.DefaultIfEmpty()
group new { rd, r, s, e, md } by new
{
rd.RouteDispatchID,
r.RouteNumber,
s.ShortDescription,
rd.DispatchDate,
rd.CreationDate,
e.FirstName,
e.LastName
} into g
select new RouteView
{
RouteDispatchID = (System.Int32)g.Key.RouteDispatchID,
RouteNumber = g.Key.RouteNumber,
Status = g.Key.ShortDescription,
DispatchDate = (System.DateTime)g.Key.DispatchDate,
CreatedDate = (System.DateTime)g.Key.CreationDate,
FirstName = g.Key.FirstName,
LastName = g.Key.LastName,
NumMachines = g.Count(),
TotalRecordCount = 0
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow