【问题标题】:How to loop through a segment of list while another segment remains constant如何在另一段保持不变的情况下循环遍历一段列表
【发布时间】:2016-03-23 14:54:43
【问题描述】:

我正在尝试循环遍历一个列表

var grp = profile.where(pro => pro.Age == AgeRange.group13_17).ToArray

这很好,但我也希望能够在上述查询保持不变的情况下循环另一个范围的值,即 while

pro.Age = AgeRange.group13_17 

我希望能够遍历属于同一年龄段的每个收入等级范围。下面是我在 C# 中的列表结构

var IncomeAge = new List<RealIncomeAge>();
{
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class1 });
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class2 });
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class3 });
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class4 });
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class5 });
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class6 });
    IncomeAge.Add(new RealIncomeAge { RealAge = AgeRange.group18_24, RealIncome = IncomeRange.class7 });
}

【问题讨论】:

    标签: c# .net list loops foreach


    【解决方案1】:

    您可以先按年龄段分组,然后选择组中的所有元素,如下所示:

    //group by
    var groups = IncomeAge.GroupBy(ia => ia.RealAge);
    
    //select where age group is group18_24
    foreach (var item in groups.SelectMany(ra => ra.Where(a=>a.RealAge==AgeRange.group18_24))) 
        Console.WriteLine(item.RealIncome);
    

    【讨论】:

      【解决方案2】:

      类似的东西:

      var groups = IncomeAge.GroupBy(ia => ia.RealAge)
      

      然后你可以做一个

      foreach (var item in groups.Where(g => g.Key.Age == AgeRange.group13_17))
        Console.WriteLine(item)
      

      【讨论】:

        猜你喜欢
        • 2013-02-27
        • 1970-01-01
        • 2020-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 2022-01-06
        相关资源
        最近更新 更多