获取数据表列的总和

时间:2014-06-26 13:05:17

标签: c# linq

我想构建一个像这样的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]);

请建议如何获取数据表列的总和?

编辑:我正在尝试计算" Calls"的总和。 coulmn where date is" 2013-10-09"。但我不知道如何在linq查询中传递它。

更新 我只是写了这一行,它的工作原理

string ymd =" 10/9/2013&#34 ;; //这来自数据库

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

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

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

任何人都可以建议我如何检查来电是否为空白,然后不要求所有数值相加。

2 个答案:

答案 0 :(得分:0)

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

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

要立即使用双倍,而不是对象执行此操作:

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

答案 1 :(得分:0)

尝试此操作(注意:如果您的日期字段包含时间值,请在比较前使用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"));