2012-07-08 60 views
0

我有一個db表,如下所示:state是一個範圍從1到6的數字,我存儲狀態更改的日子。linq-to-sql在特定日期獲取狀態值

| State |  Date | 
| 3 | 5/19/2012 | 
| 1 | 6/12/2012 | 
| 4 | 7/2/2012 | 

我正在寫一個.Where條款,但我堅持。基本上,我是某個日期的查詢數據,我想要的對象模型的其中一個屬性是該特定日期的狀態。 如果我寫:

from s in MyDC.StateTable 
    where s.Date == SomeDate.Date 
    select s.State 

那麼當然它不會返回我需要什麼。例如,如果我查詢2012年6月22日,那麼它應該返回1,因爲那是該日期的狀態;它在2012年6月12日設置爲1。我怎麼寫這個where子句?

感謝您的建議。

回答

0

也許是這樣的:

// var date = DateTime.Now.Subtract(TimeSpan.FromMonths(1)); 
var state = MyDC.StateTable.Where(xx => date >= xx.Date) 
          .OrderBy(xx => xx.Date) 
          .First() 
          .State; 
0

這是你在找什麼?

var date = ??; 

var state = from s in MyDC.StateTable 
where x.SomeDate.Date == date 
select s.State; 
+0

不,我的意思是如果我查詢2012年6月22日,那麼該州等於1,因爲這就是它在2012年6月12日設置的。 – frenchie 2012-07-08 01:19:25

0

我認爲這是可行的。不確定語法是完全正確的,但它很接近。

var state = MyDC.StateTable 
    .Where(row => row.Date <= SomeDate) 
    .OrderByDescending(row.Date) 
    .First() 
    .Select(row => row.State)