如何从IGrouping中获取价值?

时间:2013-11-19 13:55:48

标签: linq igrouping

我已经应用了IGrouping<>在列表上 - 这是它的样子:

    IEnumerable<IGrouping<TierRequest,PingtreeNode>> Tiers
    {
        get { return ActiveNodes.GroupBy(x => new TierRequest(x.TierID, x.TierTimeout, x.TierMaxRequests)); }
    }

稍后在我的代码中,我迭代了Tiers。使用Key元素获取关键数据很简单,但如何获得构成值部分的IEnumerable<PingtreeNode>

提前致谢

3 个答案:

答案 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();