【问题标题】:How to get values out of IGrouping?如何从 IGrouping 中获取值?
【发布时间】:2013-12-03 02:49:37
【问题描述】:

我已将 IGrouping 应用于列表 - 如下所示:

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

稍后在我的代码中,我迭代了层。使用 Key 元素获取关键数据很简单,但是如何获取构成值部分的IEnumerable&lt;PingtreeNode&gt;

提前致谢

【问题讨论】:

    标签: c# linq igrouping


    【解决方案1】:

    Tiers.Select(group =&gt; group.Select(element =&gt; ...));

    【讨论】:

    • 啊,太简单了,但对我来说太简单了,无法锻炼,哈哈
    【解决方案2】:

    在 foreach 中你可以得到这样的值

    foreach(var group in tiers)
    {
        TierRequest key = group.Key;
        PingtreeNode[] values = group.ToArray();
    }
    

    【讨论】:

      【解决方案3】:

      组本身实现IEnumerable&lt;T&gt;,可以迭代,或与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();
      

      【讨论】:

        猜你喜欢
        • 2012-01-21
        • 2011-06-15
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 2020-05-22
        • 2018-03-30
        • 2016-08-27
        相关资源
        最近更新 更多