No já právě potřebuju celou tu skupinku. Celý ten group by je tam jen kvůli tomu abych dostal dopravní informaci s největší verzí, tedy tu nejaktuálnější. V tabulce jsou sice časy platí: od do, ale může nastat situace, kdy vyjde aktualizace s vyšší verzí, ale podle času může ještě platit informace i s verzí-1. Zatím jsem to vyřešil joinem, který mi tu skupinku spojí s plnohodnotnými objekty podle Id:
var query = from t in db.TrafficInformations
where t.ValidFrom < now && t.ValidTo > now && t.Type == type
group t by new { t.FK_JsdiId, t.Version, t.Id } into g
join tr in db.TrafficInformations on g.Key.Id equals tr.Id
select new BasicInfo
{
TrafficInformationId = tr.Id,
Lat = tr.Location.Coord.Latitude,
Long = tr.Location.Coord.Longitude,
LocationText = tr.Location.Name,
EventClassId = tr.TMC.EventInfoes.Where(e => e.EventOrder == 1).FirstOrDefault().FK_UpdateClassId
};
Zkusil jsem i, to vše dát do group by, je tam problém s typem DbGeograhpy, ale takhle to funguje:
var query = from t in db.TrafficInformations
where t.ValidFrom < now && t.ValidTo > now && t.Type == type
group t by new { t.FK_JsdiId, t.Version,t.Id,t.Location.Name,t.Location.Coord.Latitude,t.Location.Coord.Longitude,t.TMC } into g
select new BasicInfo
{
TrafficInformationId = g.Key.Id,
Lat = g.Key.Latitude,
Long = g.Key.Longitude,
LocationText = g.Key.Name,
EventClassId = g.Key.TMC.EventInfoes.Where(e => e.EventOrder == 1).FirstOrDefault().FK_UpdateClassId
};
Varianta s joinem zdá se být malinko rychlejší.
|