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);
}

Microsoft Docs for DataColumn.Expression, CONVERT function

Microsoft Docs for DataTable.Compute, Filter remarks

您是否应该使用 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);