【发布时间】:2014-08-22 18:49:17
【问题描述】:
我目前正在使用 2 种方法进行搜索。我运行一个存储过程,它在两个日期之间提取信息。然后在这些结果中进行 LINQ 搜索。
基本上,用户使用可选的时间参数选择开始和结束日期。例如,用户选择从 2014 年 1 月 1 日上午 11 点到 2014 年 1 月 3 日下午 3 点的开始日期。问题是由于搜索分两个阶段,它将搜索开始日期和结束日期之间的所有行。然后 LINQ 搜索这些时间,然后将其限制在每天上午 11 点到下午 3 点之间。
由于某种原因,我似乎无法解决如何解决这个问题。这是我的应用程序中的代码...
var model = db.Results(startDate, endDate)
.Where(r => startTime == null || r.A_Time >= startTime)
.Where(r => endTime == null || r.A_Time <= endTime)
.OrderBy(r => r.A_Time)
.OrderBy(r => r.A_Date)
.Take(1000)
);
根据要求,db结构如下。
TABLE [dbo].[TablewithInfo](
[A_Date] [date] NOT NULL,
[A_Time] [time](7) NOT NULL,
[Site] [varchar](50) NOT NULL,
[Event] [varchar](50) NULL,
[Client] [varchar](25) NOT NULL,
[User] [varchar](50) NULL,
[Host] [varchar](50) NOT NULL,
[Info] [varchar](2800) NOT NULL)
【问题讨论】:
-
对不起,我不明白你要完成什么?
-
你的代码有什么问题?
-
A_Time、startTime和endTime的类型有哪些? -
不相关,但你可能想要
OrderBy(...).OrderBy(...)而不是OrderBy(...).ThenBy(...)。 -
您可能应该将这些
Where与&&合二为一,并使用OrderBy(...).ThenBy(...)进行订购。