我有桌子
Transactions {
TransactionId
TransactionDate
TotalIncome
}
我想显示totalIncome
年中的TransactionDate
年
可以说我的数据库中有以下数据
TransactionId TransactionDate TotalIncome
1 2017-10-12 230
2 2017-11-10 400
3 2018-01-03 300
4 2018-10-05 500
5 2019-01-06 600
6 2019-02-10 200
所以我想在图表中以charttype
样条显示2017
,显示630
,因为230+400 = 630
的{{1}}显示2018
,依此类推上。
因此,我想在“图表年”中将其视为800
,将总收入视为x-axis
这样写时我在做什么错?
y-axis
答案 0 :(得分:3)
您应按TransactionDate.Year
分组。我不确定Entity Framework(或您使用的任何ORM)是否支持此功能,但您最好对内存结果进行分组。像这样:
var result = (from pr in db.Transactions
select pr).ToArray();
chart1.DataSource = result
.GroupBy(x => x.TransactionDate.Year)
.Select(g => new
{
Year = g.Key
TotalIncome = g.Sum(y => y.TotalIncome)
})
.ToArray();
答案 1 :(得分:0)
尝试以下操作:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
using System.Data;
namespace ConsoleApplication100
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("TransactionId", typeof(int));
dt.Columns.Add("TransactionDate", typeof(DateTime));
dt.Columns.Add("TotalIncome", typeof(int));
dt.Rows.Add(new object[] { 1, DateTime.Parse("2017-10-12"), 230 });
dt.Rows.Add(new object[] { 2, DateTime.Parse("2017-11-10"), 400 });
dt.Rows.Add(new object[] { 3, DateTime.Parse("2018-01-03"), 300 });
dt.Rows.Add(new object[] { 4, DateTime.Parse("2018-10-05"), 500 });
dt.Rows.Add(new object[] { 5, DateTime.Parse("2019-01-06"), 600 });
dt.Rows.Add(new object[] { 6, DateTime.Parse("2019-02-10"), 200 });
var results = dt.AsEnumerable()
.GroupBy(x => x.Field<DateTime>("TransactionDate").Year)
.Select(x => new { year = x.Key, total = x.Sum(y => y.Field<int>("TotalIncome")) })
.ToList();
}
}
}