C#按日期获取datagridview列的总和
C# Getting the sum of datagridview column by date
如何按日期获取 datagridview 中的数据总和。我正在做一个项目,需要从 5/19/2020 到 5/13/2020 等特定日期获取总销售额。我只需要从已经在 table 中的那几天获得销售总额。谢谢你 :)。
这个缺少我想要的日期范围过滤
conns.Open();
DataTable dt = new DataTable();
adapt = new SqlDataAdapter("select * from tblSales", conns);
adapt.Fill(dt);
sale.DataSource = dt;
conns.Close();
int sum = Convert.ToInt32(dt.Compute("SUM(Total)", string.Empty));
income.Text = Convert.ToString(sum);
Click here to view the system image im doing
建议尝试以下操作。
string datesFilter = "theDate >= CONVERT('5/13/2020', 'System.DateTime')"
+ " AND theDate <= CONVERT('5/19/2020', 'System.DaetTime')";
// if the data does not comply with the datesFilter, then null will be returned
object sumObject = dt.Compute("SUM(Total)", datesFilter);
int sum = 0;
if (sumObject != null)
{
sum = Convert.ToInt32(sumObject);
}
您是否应该使用 Linq 表达式 WhereClause 按日期过滤并使用 Sum 获取总数。
示例代码:
//模拟你的DateTimePicker
DateTimePicker dateTimePickerInit = new DateTimePicker();
dateTimePickerInit.Value = new DateTime(2020, 03, 01);
DateTimePicker dateTimePickerEnd = new DateTimePicker();
dateTimePickerEnd.Value = DateTime.Now.Date;
//To simulate your DataTable
DataTable dt = new DataTable("CompanySales");
dt.Columns.Add("Company", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("Total", typeof(decimal));
//Sample of rows
dt.Rows.Add("Company0", new DateTime(2020, 02, 01), 3000.2);
dt.Rows.Add("Company1", new DateTime(2020, 03, 01), 4000.2);
dt.Rows.Add("Company2", new DateTime(2020, 04, 01), 6000.2);
dt.Rows.Add("Company3", new DateTime(2020, 05, 01), 7000.2);
//The code of Linq expression WhereClause to filter and apply the results to another Datatable
var dtFiltered = dt.AsEnumerable()
.Where(x => x.Field<DateTime>("Date").Date >= dateTimePickerInit.Value && x.Field<DateTime>("Date").Date <= dateTimePickerEnd.Value)
.CopyToDataTable();
//The code of Linq expression to Apply Sum Total of the dtFiltered
var total = dtFiltered.AsEnumerable()
.Sum(x=> x.Field<decimal>("Total"));
Console.WriteLine(total);
如何按日期获取 datagridview 中的数据总和。我正在做一个项目,需要从 5/19/2020 到 5/13/2020 等特定日期获取总销售额。我只需要从已经在 table 中的那几天获得销售总额。谢谢你 :)。
这个缺少我想要的日期范围过滤
conns.Open();
DataTable dt = new DataTable();
adapt = new SqlDataAdapter("select * from tblSales", conns);
adapt.Fill(dt);
sale.DataSource = dt;
conns.Close();
int sum = Convert.ToInt32(dt.Compute("SUM(Total)", string.Empty));
income.Text = Convert.ToString(sum);
Click here to view the system image im doing
建议尝试以下操作。
string datesFilter = "theDate >= CONVERT('5/13/2020', 'System.DateTime')"
+ " AND theDate <= CONVERT('5/19/2020', 'System.DaetTime')";
// if the data does not comply with the datesFilter, then null will be returned
object sumObject = dt.Compute("SUM(Total)", datesFilter);
int sum = 0;
if (sumObject != null)
{
sum = Convert.ToInt32(sumObject);
}
您是否应该使用 Linq 表达式 WhereClause 按日期过滤并使用 Sum 获取总数。
示例代码: //模拟你的DateTimePicker DateTimePicker dateTimePickerInit = new DateTimePicker(); dateTimePickerInit.Value = new DateTime(2020, 03, 01);
DateTimePicker dateTimePickerEnd = new DateTimePicker();
dateTimePickerEnd.Value = DateTime.Now.Date;
//To simulate your DataTable
DataTable dt = new DataTable("CompanySales");
dt.Columns.Add("Company", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("Total", typeof(decimal));
//Sample of rows
dt.Rows.Add("Company0", new DateTime(2020, 02, 01), 3000.2);
dt.Rows.Add("Company1", new DateTime(2020, 03, 01), 4000.2);
dt.Rows.Add("Company2", new DateTime(2020, 04, 01), 6000.2);
dt.Rows.Add("Company3", new DateTime(2020, 05, 01), 7000.2);
//The code of Linq expression WhereClause to filter and apply the results to another Datatable
var dtFiltered = dt.AsEnumerable()
.Where(x => x.Field<DateTime>("Date").Date >= dateTimePickerInit.Value && x.Field<DateTime>("Date").Date <= dateTimePickerEnd.Value)
.CopyToDataTable();
//The code of Linq expression to Apply Sum Total of the dtFiltered
var total = dtFiltered.AsEnumerable()
.Sum(x=> x.Field<decimal>("Total"));
Console.WriteLine(total);