使用 Linq C# 获取循环中的分组属性

Bre*_*den 4 c# linq

我有一些CartItems按属性分组的FleetID

var groupedCartItems = cart.CartItems.OrderBy(x => x.FleetID)
                           .GroupBy(x => x.FleetID);

foreach (var fleetItem in groupedCartItems)
{
    /////// var currentFleetID = fleetItem.GroupedFleetID;   ////////
    foreach(var itm in fleetItem)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

在每个组的循环中,如何访问FleetID其分组依据的属性?

suj*_*lil 6

您的情况是基于单个列进行分组,因此可以通过组键访问它。这意味着fleetItem.Key将为您提供该迭代​​中特定组的密钥。如果您想从内部循环访问相同的内容意味着您可以使用itm.FleetID.

foreach (var fleetItem in groupedCartItems)
{
     var currentFleetID = fleetItem.Key;   //outer loop
     foreach(var itm in fleetItem)
     {             
         var groupId = itm.FleetID; // inner loop
     }
}
Run Code Online (Sandbox Code Playgroud)

如果您基于多个列执行分组意味着您可以根据键访问它们,请考虑分组如下:

var groupedCartItems = cart.CartItems.OrderBy(x => x.FleetID)
                           .GroupBy(x => new { x.FleetID,x.FleetName});
Run Code Online (Sandbox Code Playgroud)

然后您可以像下面这样访问它们:

foreach (var fleetItem in groupedCartItems)
{
     var currentFleetID = fleetItem.Key.FleetID;   
     var currentFleetName = fleetItem.Key.FleetName;   
}
Run Code Online (Sandbox Code Playgroud)