我的数据是这样的:
read_date | T1 | T2 |
15.02.2000 | 2 | 3 |
16.02.2000 | 4 | 5 |
15.03.2000 | 2 | 3 |
16.03.2000 | 5 | 4 |
我想T1和T2,像这样的mountly总和:
read_date | T1 | T2 |
02.2000 | 6 | 8 |
03.2000 | 7 | 7 |
我尝试写这样的事情:
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)
};
但是这并没有给预期data.Is有什么例子来给数据每小时总和,每天的数额等。
谢谢
分组时,应只采取的年份和月份到:
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)
};
首先,我想你可以跳过匿名类型:
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)
};
其次,由月龄组,使用一些值唯一标识月份,像这样的:
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)
};
您当前组由意志集团由全日(即15.02.2000而不是02.2000)。 这将最终为每一天,不是一个月创建一个单独的群体。
添加.Month到组通过(假设它是约会对象):
group s by new { s.read_date.Month} into g
static void Main()
{
var list = new List<meter_reading>
{
new meter_reading {Date = new DateTime(2000, 2, 15), T1 = 2, T2 = 3},
new meter_reading {Date = new DateTime(2000, 2, 10), T1 = 4, T2 = 5},
new meter_reading {Date = new DateTime(2000, 3, 15), T1 = 2, T2 = 3},
new meter_reading {Date = new DateTime(2000, 3, 15), T1 = 5, T2 = 4}
};
var sum = list
.GroupBy(x => GetFirstDayInMonth(x.Date))
.Select(item => new meter_reading
{
Date = item.Key,
T1 = item.Sum(x => x.T1),
T2 = item.Sum(x => x.T2),
}).ToList();
}
private static DateTime GetFirstDayInMonth(DateTime dateTime)
{
return new DateTime(dateTime.Date.Year, dateTime.Date.Month, 1);
}
query.OrderBy(o => o.OrderDate)
.GroupBy(o => DbFunctions.CreateDateTime(o.OrderDate.Year, o.OrderDate.Month, 1, 0, 0, 0))
.Select(group => new DateIncomeDto { Date = group.Key.Value, Income = group.Sum(item => item.PayFee ?? 0) });
它为我工作!