Ali*_*hşi 8 c# linq group-by sum
我的数据看起来像:
read_date | T1 | T2 |
15.02.2000 | 2 | 3 |
16.02.2000 | 4 | 5 |
15.03.2000 | 2 | 3 |
16.03.2000 | 5 | 4 |
Run Code Online (Sandbox Code Playgroud)
我想获得T1和T2的总和,如下所示:
read_date | T1 | T2 |
02.2000 | 6 | 8 |
03.2000 | 7 | 7 |
Run Code Online (Sandbox Code Playgroud)
我尝试写这样的东西:
var result = from s in meter_readings.Take(10)
group s by new { s.read_date} into g
select new
{
read_date = g.Key.read_date,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Run Code Online (Sandbox Code Playgroud)
但这并没有给出预期的数据.是否有任何例子可以提供每小时数据,每日总和等数据.
谢谢
Dar*_*rov 18
在分组时,您应该只考虑年份和月份:
var result =
from s in meter_readings.Take(10)
group s by new { date = new DateTime(s.read_date.Year, s.read_date.Month, 1) } into g
select new
{
read_date = g.Key.date,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Run Code Online (Sandbox Code Playgroud)
首先,我认为你可以跳过匿名类型:
var result = from s in meter_readings.Take(10)
group s by s.read_date into g
select new
{
read_date = g.Key,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Run Code Online (Sandbox Code Playgroud)
其次,要按月分组,请使用一些唯一标识月份的值,如下所示:
var result = from s in meter_readings.Take(10)
group s by s.read_date.ToString("yyyy.MM") into g
select new
{
read_month = g.Key,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15210 次 |
| 最近记录: |