使用实体框架按日期执行搜索

时间:2013-10-28 10:02:19

标签: c# asp.net-mvc asp.net-mvc-4 entity-framework-5

我尝试在Entity框架中进行搜索查询。我的表项目有'Id','ProjectName','Description'和“modificationdate”等。我想在'ProjecName','Description'和“modificationdate”上执行搜索。我成功地在'ProjectName'和' '描述',但我不知道如何按日期执行搜索

var found = from n in context.Project
                            where n.projectName.Contains(SearchKey) ||
                            n.description.Contains(SearchKey) 
                        select n;

2 个答案:

答案 0 :(得分:2)

您可以使用比>,小于<和等于==运算符更高的运算符(请参阅this获取完整列表)来按日期搜索。一周或更短时间内修改项目的示例:

DateTime.Now.AddDays(-7) > n.modificationdate

如果您不想包含时间,可以使用Date属性将其排除:

DateTime.Now.AddDays(-7).Date > n.modificationdate.Date

编辑按指定日期搜索:

date == n.modificationdate

date是指定日期。如果在SearchKey变量中指定了日期(我假设它是string),则必须先将其解析为日期。

答案 1 :(得分:2)

从评论中获取你所说的话:

  

实际上我尝试在给定日期执行搜索

如果您想在给定日期搜索修改,只需搜索大于或等于日期开头的值,然后搜索低于第二天的所有值。

var searchDate = new DateTime(2013, 2, 5); // or searchDateWithTime.Date
var searchDatePlusOne = searchDate.AddDays(1);

return from n in context.Project
       where n.ModificationDate >= searchDate
             && n.ModificationDate < searchDatePlusOne
       select n;

如果n.ModificationDate包含日期而已包含日期,那么n.ModificationDate == searchDate就足够了。