如何使用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中的日期之间进行求和?的主要内容,如果未能解决你的问题,请参考以下文章

LINQ:具有多个条件的左外连接

在 C# linq 中结合多个具有可选参数的 where 条件?

如何使用 group by 和 order by LINQ DataTable 以删除重复数据

如何使用 LINQ 从 DataTable 中以 IEnumerable<MODEL> 形式获取数据?

【.net】datatable分组,然后分成多个表或者多个集合

C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量