2017-04-07 59 views
3

我有一些CartItems,我已經按屬性FleetID分組。獲得與Linq C循環中的分組屬性#

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) 
    { 

    } 
} 

在各組的一個循環,我怎麼能訪問它是由分組的FleetID財產?

+6

'fleetItem.Key' –

回答

3

在這裏,你的情況是基於單個列分組,所以它可以通過組密鑰來訪問。這意味着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 
    } 
} 

如果要執行基於多個列組意味着你可以針對鍵訪問它們,考慮到分組就像folling:

var groupedCartItems = cart.CartItems.OrderBy(x => x.FleetID) 
      .GroupBy(x => new { x.FleetID,x.FleetName}); 

然後你就可以訪問它們像下面這樣:

foreach (var fleetItem in groupedCartItems) 
{ 
    var currentFleetID = fleetItem.Key.FleetID; 
    var currentFleetName = fleetItem.Key.FleetName; 
} 
+1

感謝,對多列分組將是我的下一個問題!感謝您超越我原來的問題,感激 –

0

當您使用GroupByIGrouping對象的集合,每個人都有一個Key屬性,這是你想要的,也可以使用foreach環獲得該組中的項目重複。 https://msdn.microsoft.com/en-us/library/bb343251(v=vs.110).aspx

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

    foreach (var group in groupedCartItems) 
    { 

     var currentFleetID = group.Key; //////// 

     foreach(var itm in group) 
     { 

     } 
    }