获取数据表列的和
本文关键字:数据表 获取 | 更新日期: 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*/;