用于返回有序分组中第一项的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,一个用于最低序列?描述非常混乱。每个行程都有零个或多个子行程数据?您在旅途中有不同的车辆,还是一辆车?很高兴看到包含示例数据和预期结果的表这正是我所需要的,并帮助我了解如何在分组中使用排序。