编辑
为了避免这个错误: 在LINQ to Entities中不支持指定的类型成员"Date"。只支持初始化器、实体成员和实体导航属性。
var _My_ResetSet_Array = _DB
.tbl_MyTable
.Where(x => x.Active == true)
.Select(x => x).ToList();
var filterdata = _My_ResetSet_Array
.Where(x=>DateTime.Compare(x.DateTimeValueColumn.Date, DateTime.Now.Date) <= 0 );
第二行是必需的,因为LINQ to Entity无法将日期属性转换为SQL查询。因此最好先获取数据,然后再应用日期筛选器。
编辑
如果您只想比较日期时间的日期值,那么可以使用
DateTime.Date
属性 - 获取此实例的日期组件。
您的代码:
var _My_ResetSet_Array = _DB
.tbl_MyTable
.Where(x => x.Active == true
&& DateTime.Compare(x.DateTimeValueColumn.Date, DateTime.Now.Date) <= 0 )
.Select(x => x);
如果是这样,那么使用:
DateTime.Compare Method - 比较两个 DateTime 实例并返回一个整数,指示第一个实例是早于、相同还是晚于第二个实例。
给你的代码:
var _My_ResetSet_Array = _DB
.tbl_MyTable
.Where(x => x.Active == true
&& DateTime.Compare(x.DateTimeValueColumn, DateTime.Now) <= 0 )
.Select(x => x);
例子
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";
mydata.Where(t => t.ExpirationDate == null || (t.ExpirationDate != null && DbFunctions.TruncateTime(t.ExpirationDate.Value) > DbFunctions.TruncateTime(DateTime.Now)));
- Mark