Linq年龄分组(按聚合计数)

本文关键字:Linq | 更新日期: 2023-09-27 18:21:09

我在获取此linq的正确结果时遇到问题。

 var transactions = from trans in tblMemberInfo.AsEnumerable()
                    orderby trans.Field<Int32>("AGE") ascending
                    group trans by trans.Field<Int32>("AGE") into groupTrans
                    select new
                    {                                      
                         ZeroToSix = groupTrans.Count(age => age.Field<Int32>("AGE") >= 0 && age.Field<Int32>("AGE") <= 6) 
                    };

我有一个数据表,其中包含以下数据。现在,我想把所有的年龄统计加起来年龄在0到5岁之间。

AGE     Count
0       6
1       6
2       7
3       5
4       5
5       20
6       5
7       5
8       5
9       5
10      5

我希望看到这样的结果。

Age
ZeroToFive = 49
AboveSix = 25

Linq年龄分组(按聚合计数)

检查此项:

// mock data
var data = new List<dynamic> {
    new { Age = 0, Count = 6 },
    new { Age = 1, Count = 6 },
    new { Age = 2, Count = 7 },
    new { Age = 3, Count = 5 },
    new { Age = 4, Count = 5 },
    new { Age = 5, Count = 20 },
    new { Age = 6, Count = 5 },
    new { Age = 7, Count = 5 },
    new { Age = 8, Count = 5 },
    new { Age = 9, Count = 5 },
    new { Age = 10, Count = 5 },
};
var age = new { 
                ZeroToFive = data.Where(x => x.Age < 6).Sum(x => x.Count),
                AboveSix = data.Where(x => x.Age >= 6).Sum(x => x.Count)
              };