如何使用LINQ在具有多个条件的DataTable中的日期之间进行求和?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用LINQ在具有多个条件的DataTable中的日期之间进行求和?相关的知识,希望对你有一定的参考价值。
Name issue_date free_coupon_days category
Einstein 25/Dec/2015 60 movie
Hellen Keller 01/Jan/2016 7 movie
Einstein 09/Jul/1999 9 movie
Einstein 14/Jun/2015 3 waterpark
Hellen Keller 19/Nov/1980 30 movie
Einstein 29/Sep/2015 19 movie
我有一个DataTable dt,例如。
我想将free_coupon_days与“Einstein”,“2015年9月27日〜2015年12月27日”,“电影”之间的日期相加。
理想的输出为79,如下所示计算行数。
Name issue_date free_coupon_days category
Einstein 25/Dec/2015 60 movie
Einstein 29/Sep/2015 19 movie
我尝试了一些方法,但我是初学者,反对复杂的条件。
这是我尝试过的一些代码:
int sum_freecoupon_days_between_dates = (from item in dt
where item.issue_date >= '27/Sep/2015' && item.issue_date <= '27/Dec/2015' &&
item.Name == "Einstein" &&
item.category == "movie"
select item).Sum(k => k.free_coupon_days);
我怎么能在LINQ中这样做?
答案
我分享我的解决方案:
int sum = dt.AsEnumerable().Where(dr => dr.Field<string>("Name") == "Einstein" &&
dr.Field<string>("category") == "movie" &&
(dr.Field<DateTime>("issue_date").Date >= Convert.ToDateTime("27/09/2015") && dr.Field<DateTime>("issue_date").Date <= Convert.ToDateTime("27/12/2015"))).
Select(dr => dr.Field<int>("free_coupon_days")).
Sum();
以上是关于如何使用LINQ在具有多个条件的DataTable中的日期之间进行求和?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# linq 中结合多个具有可选参数的 where 条件?
如何使用 group by 和 order by LINQ DataTable 以删除重复数据
如何使用 LINQ 从 DataTable 中以 IEnumerable<MODEL> 形式获取数据?