2011-02-07 7 views
2

은 내가 어떻게이 DB 테이블 데이터 주어진 LINQ를 사용하여 가장 최근의LINQ는

에 의해 주문, 서비스 id에 의해 필터링 된

지난 12 (개월) 기록을 당길 것이다 지난 12 개월 얻을 :

- 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 
- ... 

답변

6

도움이 되셨습니까?

"someServiceId"는 필터링 할 서비스 ID입니다.

지금부터 전 12개월 :

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

기각 가장 최근의 항목에서 : 나는 컴파일러를 통해이를 실행하지 않은 그러나 희망이 가야

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; 

너는 올바른 방향으로.

+0

그건 x.Date> 없습니다 <) – Guillaume86

+0

결과 순위;.) ..... – TWith2Sugars

+0

이 작동하지만 그것은 단지 6개월 :(저를주고 내 마지막 날짜가 9이기 때문에, 그것은 왜 내가 볼/1/2010. 그 때문에 DateTime을 사용할 수 없습니다. 이제 .. 가장 최근에 시작해야합니다. " – ShaneKm

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

그런 방법은 없습니다 :'TimeSpan.FromYears()'. 'TimeSpan.FromDays()'까지만 올라갑니다. –

+0

죄송합니다. 나는 기억에서 그렇게했습니다. Timepan이 월간 지속 시간을 알지 못해서 말이됩니다. – Guillaume86