LINQ过去12个月

时间:2011-02-07 09:25:04

标签: asp.net asp.net-mvc linq

我怎么拉

  

过去12个月(个月)的记录   ServiceId,按最近的顺序排序

使用linq给出这个db表数据:

 - Date         ServiceId     Views     Clicks
 - 2009-03-01       3         88107     244223
 - 2009-03-01       5         41563     94770
 - 2009-03-01       7         24165     45378
 - 2009-03-01       8         16415     24311
 - 2009-03-01       4         50341     127114
 - 2009-04-01       3         70646     211999
 - 2009-04-01       5         40380     102241
 - 2009-04-01       7         23905     40768
 - 2009-04-01       8         18996     29220
 - 2009-04-01       4         45685     112635
 - 2009-05-01       3         81044     215753
 - 2009-05-01       5         46273     121343
 - 2009-05-01       7         25744     41578
 - 2009-05-01       8         21122     32607
 - 2009-05-01       4         54349     126914
 - 2009-06-01       3         74045     201224
 - 2009-07-01       3         60558     175043
 - 2009-07-01       5         28802     69091
 - 2009-07-01       7         16250     33784
 - 2009-07-01       4         36265     88727
 - 2009-08-01       3         59030     170027
 - 2009-08-01       5         27923     63875
 - ... 

2 个答案:

答案 0 :(得分:8)

这会有帮助吗?

“someServiceId”将是您要过滤的服务ID。

12个月前从现在开始:

from x in data
where x.Date > DateTime.Now.AddMonths(-12) && x.ServiceId == someServiceId
orderby x.Date descending
select x; 

12个月前从最近的条目开始:

from x in data
let m = data.OrderByDescending(x.Date).First()
where x.Date > m.Date.AddMonths(-12) && x.ServiceId == someServiceId
orderby x.Date descending
select x; 

我没有通过编译器运行它,但希望它能让你朝着正确的方向前进。

答案 1 :(得分:0)

var request = DataContext.YourTable.Where(e => DateTime.Now.AddMonths(-12) < e.Date)
                     .Where(e => e.ServiceId == filterServiceId)
                     .OrderByDescending(e => e.Date)