在构建新对象查询时,我在实现 TOP 或 SKIP 功能时遇到问题。
我不能使用 eSQL,因为我需要使用“IN”命令——如果我遍历 IN 并将它们全部添加为“OR”参数,这可能会变得非常复杂。
代码如下:
Using dbcontext As New DB
Dim r As New ObjectQuery(Of recipient)("recipients", dbcontext)
r.Include("jobs")
r.Include("applications")
r = r.Where(Function(w) searchAppIds.Contains(w.job.application_id))
If Not statuses.Count = 0 Then
r = r.Where(Function(w) statuses.Contains(w.status))
End If
If Not dtFrom.DbSelectedDate Is Nothing Then
r = r.Where(Function(w) w.job.create_time >= dtDocFrom.DbSelectedDate)
End If
If Not dtTo.DbSelectedDate Is Nothing Then
r = r.Where(Function(w) w.job.create_time <= dtDocTo.DbSelectedDate)
End If
'a lot more IF conditions to add in additional predicates
grdResults.DataSource = r
grdResults.DataBind()
如果我使用任何形式的 .Top 或 .Skip 它会引发错误:LINQ to Entities 查询不支持查询生成器方法
有没有办法使用这种方法指定 TOP 或 Limit?如果可能,我想避免查询返回 1000 条记录。(用于用户搜索屏幕)