5

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

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

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

提前致谢

4

3 回答 3

8

Tiers.Select(group => group.Select(element => ...));

于 2013-11-19T13:59:07.990 回答
4

在 foreach 你可以得到这样的值

foreach(var group in tiers)
{
    TierRequest key = group.Key;
    PingtreeNode[] values = group.ToArray();
}
于 2013-11-19T14:00:45.990 回答
4

该组本身实现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();
于 2013-11-19T14:05:48.117 回答