用于返回有序分组中第一项的LINQ查询
分组是一个我还没有完全弄清楚的关键领域。我有以下代码:用于返回有序分组中第一项的LINQ查询,linq,grouping,Linq,Grouping,分组是一个我还没有完全弄清楚的关键领域。我有以下代码: var subTrips = tbTripData .Where(t => selectedVehicleIds.Contains(t.VehicleID)) .Join(tbSubTripData, t => t.TripID, s => s.TripID,
var subTrips = tbTripData
.Where(t => selectedVehicleIds.Contains(t.VehicleID))
.Join(tbSubTripData,
t => t.TripID,
s => s.TripID,
(t, s) => new { t = t, s = s })
.Select(r =>
new SubTrip
{
VehicleID = r.t.VehicleID,
TripID = r.t.TripID,
Sequence = r.s.Sequence,
TripDistance = r.s.TripDistance,
Odometer = r.s.Odometer
})
.ToList();
我正试图找出一个LINQ查询,它将查看子标题,并为每个车辆ID
,找到第一个里程表
,即与最低TripID
和序列
值相对应的里程表
我已经戳了一个小时,但就是想不出来。在我放弃写程序代码之前,有人能给我一些建议吗
更新:为了澄清,Sequence是行程中每个子行程的序号。因此,我要寻找的是每辆车第一个子行程的里程表,当每个分组车辆ID中的子行程由TripID订购,然后按顺序订购。我不是100%您要找的。但这可能会让你朝着正确的方向开始
var groupedList = (from s in subTrips
group s by s.VehicleID
into grp
select new
{
VehicleID = grp.Key,
Odometer = grp.OrderBy(ex => ex.TripID).Select(ex => ex.Odometer).First(),
TripID = grp.Min(ex => ex.TripID)
}
).ToList();
这将返回VehicleID、最低TripID对应的里程表和最低TripID。您所说的“最低TripID对应的里程表和序列值”是什么意思?我不确定tripid和sequence之间的关系是什么。或者两者的最低组合是什么。是两个值的最小和吗?或者你想得到两个里程表值?一个用于最低tripid,一个用于最低序列?描述非常混乱。每个行程都有零个或多个子行程数据?您在旅途中有不同的车辆,还是一辆车?很高兴看到包含示例数据和预期结果的表这正是我所需要的,并帮助我了解如何在分组中使用排序。