我在SQL Server 2008中有一个timestamp
列。
现在,我需要使用从日历服务器控件中选取的日期来查询该列。
我们假设我有一个DateTime dt对象;
我需要通过此datetime对象进行过滤,该对象返回该日期记录的所有记录(dt)。
var a = DateTime.Now.ToString();
var IsDone = from d in _le.diets
where d.log_time.Contains(a)
select d.done;
_le是一个私有实体框架对象。
此代码存在问题:
错误3'byte []'不包含 'Contains'的定义和最佳 扩展方法重载 “System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery, TSource)'有一些无效 参数f:\ tests \ diet \ diet \ DataTier \ DietMovieRepository.cs 30 32饮食
错误2无法转换lambda 表达式键入'string'因为它 不是代表 输入f:\ tests \ diet \ diet \ DataTier \ DietMovieRepository.cs 30 26饮食
错误1委托 'System.Func' 不需要1 参数f:\ tests \ diet \ diet \ DataTier \ DietMovieRepository.cs 30 26 diet
错误4实例参数:不能 从'byte []'转换为 'System.Linq.ParallelQuery'f:\ tests \ diet \ diet \ DataTier \ DietMovieRepository.cs 30 32饮食
我是EF初学者,谢谢你的帮助!
更新
在EF cs文件中
我看到了
public static diet Creatediet(global::System.Int64 id, global::System.Boolean done, global::System.Byte[] log_time)
{
diet diet = new diet();
diet.id = id;
diet.done = done;
diet.log_time = log_time;
return diet;
}
答案 0 :(得分:3)
SQL Server“timestamp”与时间无关(实际上名称“timestamp”现在已标记为已弃用;“rowversion”相同且应该替代使用)。
如果你真的有“时间戳”,这是不可能的。如果您将日期时间设置为插入时间,则应该是微不足道的:
DateTime start = date.Date, end = start.AddDays(1);
...
where row.log_time >= start && row.log_time < end
...
此外,如果您主要进行日期范围搜索,则log_time可能是聚集索引的公平候选者。或者,如果您正在进行基于日期的查询,那么对于一个整数的非聚集索引也是有效的日期。
答案 1 :(得分:0)
假设您只想查看它的日期部分?然后你应该能够做类似的事情:
var a = DateTime.Now;
var isDone = from d in _le.diets
where d.log_time.Date == a.Date
select d.done;