我已经应用了IGrouping<>在列表上 - 这是它的样子:
IEnumerable<IGrouping<TierRequest,PingtreeNode>> Tiers
{
get { return ActiveNodes.GroupBy(x => new TierRequest(x.TierID, x.TierTimeout, x.TierMaxRequests)); }
}
稍后在我的代码中,我迭代了Tiers。使用Key元素获取关键数据很简单,但如何获得构成值部分的IEnumerable<PingtreeNode>
?
提前致谢
答案 0 :(得分:4)
Tiers.Select(group => group.Select(element => ...));
答案 1 :(得分:4)
在foreach中你可以得到像这样的值
foreach(var group in tiers)
{
TierRequest key = group.Key;
PingtreeNode[] values = group.ToArray();
}
答案 2 :(得分:3)
组本身实现IEnumerable<T>
,可以迭代,或与linq方法一起使用。
var firstGroup = Tiers.First();
foreach(var item in firstGroup)
{
item.DoSomething();
}
// or using linq:
firstGroup.Select(item => item.ToString());
// or if you want to iterate over all items at once (kind of unwinds
// the grouping):
var itemNames = Tiers.SelectMany(g => g.ToString()).ToList();