2012-07-08 33 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)