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与“Eienstein”,“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中执行此操作?
答案 0 :(得分:-1)
我分享我的解决方案:
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();