获取数据表列的和

本文关键字:数据表 获取 | 更新日期: 2023-09-27 18:10:19

我想建立一个linq查询,像这样:

Double n = dtCurrentDateRows.AsEnumerable().Where(r => (String)r["DATE"] == "10/09/2013").Sum(r => (Double)r["CALLS"]);

这是我目前为止写的:

string c = "CALLS";
string ymd= "2013-10-09";
string date = String.Format("'{0}'", DateTime.Parse(ymd).ToString("M/dd/yyyy"));
Double total = dtCurrentDateRows.AsEnumerable().Where(r => (String)r["DATE"] == date).Sum(r => (Double)r[c]);

请建议如何获得一个可数据列的总和?

编辑:我正试图计算日期为"2013-10-09"的"呼叫"可能的总和。但是我不知道如何在linq查询中传递它。

我只是简单地写了这行,它工作

string ymd = "10/9/2013";//这来自于数据库

string date = DateTime.Parse(ymd).ToString("M/dd/yyyy");

Double sum = dtCurrentDateRows.AsEnumerable()。其中(r => (String)r["DATE"] == DATE)。Sum(r => (Double)r[columnName]);

但是如果列有一些空白值,它会给出0.0。

谁能建议我如何检查调用是否为空白,然后不求和,否则sum所有值。

获取数据表列的和

试试这个(注意:如果你的日期字段有时间值,在比较之前使用EntityFunctions.TruncateTime()删除它)

System.DateTime myDate = new System.DateTime(2013, 10, 9); //Year, Month, Date
var n = dtCurrentDateRows.AsEnumerable()
                  .Where(r => r.Field<System.DateTime>("DATE") == myDate)
                  .Sum(r=> r.Field<Double>("CALLES"));

您可以像这样使用Compute()方法:

object sum = dtCurrentDateRows.Compute("Sum(CALLS)", string.Format(CultureInfo.InvariantCulture.DateTimeFormat,"date = #{0}#",YourDateVariable));

要立即获得双精度对象,可以这样做:

double sum = (double)/*rest of expression like above*/;