如何将两个条件过滤器添加到同一个 IEnumerable?
How can I add two conditional filters to the same IEnumerable?
如何融合这 2 个 If 语句,使我的两个 Droplist 过滤器协同工作来过滤数据?我有 2 个下拉列表(transfilter 和 Soortfilter),我希望能够 select 下拉列表 1 中的某些内容和 select 下拉列表 2 中的其他内容,然后按过滤器并让它显示具有的项目select通过两个过滤器进行过滤。
@ 这一点我有 Return View(query.ToList())
只显示我从下拉列表 1
中筛选的项目
Function Index(transFilter As TransactieType?, soortfilter As Soort?) As ActionResult
Dim query As IEnumerable(Of Pand)
If Not transFilter.HasValue OrElse transFilter.Value = TransactieType.Beiden Then
query = db.Panden
Else
query = db.Panden.Where(Function(p) p.TransactieType = transFilter.Value)
End If
If Not soortfilter.HasValue OrElse soortfilter.Value = Soort.All Then
query = db.Panden
Else
query = db.Panden.Where(Function(p) p.Soort = soortfilter.Value)
End If
Return View(query.ToList())
End Function
我正在尝试这个,但没有真正起作用
Function Index(transFilter As TransactieType?, soortfilter As Soort?) As ActionResult
Dim query As IEnumerable(Of Pand)
If Not transFilter.HasValue And soortfilter.HasValue OrElse transFilter.Value = TransactieType.Beiden And soortfilter.Value = Soort.All Then
query = db.Panden
Else
query = db.Panden.Where(Function(p) p.TransactieType = transFilter.Value And p.Soort = soortfilter.Value)
End If
Return View(query.ToList())
问题是您在两个 If
语句的第一部分都设置了 query = db.Panden
。当您处理增量构建 LINQ 查询时,总是
- 从一个基本案例开始。在这种情况下,它将是
Dim query As IEnumerable(Of Pand)
使用 query = query.Where
.
将每个附加过滤器直接添加到该基本案例
Function Index(transFilter As TransactieType?, soortfilter As Soort?) As ActionResult
Dim query As IEnumerable(Of Pand) = db.Panden
If transFilter.HasValue AndAlso transFilter.Value <> TransactieType.Beiden Then
query = query.Where(Function(p) p.TransactieType = transFilter.Value)
End If
If soortfilter.HasValue AndAlso soortfilter.Value <> Soort.All Then
query = query.Where(Function(p) p.Soort = soortfilter.Value)
End If
Return View(query.ToList())
End Function
如何融合这 2 个 If 语句,使我的两个 Droplist 过滤器协同工作来过滤数据?我有 2 个下拉列表(transfilter 和 Soortfilter),我希望能够 select 下拉列表 1 中的某些内容和 select 下拉列表 2 中的其他内容,然后按过滤器并让它显示具有的项目select通过两个过滤器进行过滤。
@ 这一点我有 Return View(query.ToList())
只显示我从下拉列表 1
Function Index(transFilter As TransactieType?, soortfilter As Soort?) As ActionResult
Dim query As IEnumerable(Of Pand)
If Not transFilter.HasValue OrElse transFilter.Value = TransactieType.Beiden Then
query = db.Panden
Else
query = db.Panden.Where(Function(p) p.TransactieType = transFilter.Value)
End If
If Not soortfilter.HasValue OrElse soortfilter.Value = Soort.All Then
query = db.Panden
Else
query = db.Panden.Where(Function(p) p.Soort = soortfilter.Value)
End If
Return View(query.ToList())
End Function
我正在尝试这个,但没有真正起作用
Function Index(transFilter As TransactieType?, soortfilter As Soort?) As ActionResult
Dim query As IEnumerable(Of Pand)
If Not transFilter.HasValue And soortfilter.HasValue OrElse transFilter.Value = TransactieType.Beiden And soortfilter.Value = Soort.All Then
query = db.Panden
Else
query = db.Panden.Where(Function(p) p.TransactieType = transFilter.Value And p.Soort = soortfilter.Value)
End If
Return View(query.ToList())
问题是您在两个 If
语句的第一部分都设置了 query = db.Panden
。当您处理增量构建 LINQ 查询时,总是
- 从一个基本案例开始。在这种情况下,它将是
Dim query As IEnumerable(Of Pand)
使用
将每个附加过滤器直接添加到该基本案例query = query.Where
.Function Index(transFilter As TransactieType?, soortfilter As Soort?) As ActionResult Dim query As IEnumerable(Of Pand) = db.Panden If transFilter.HasValue AndAlso transFilter.Value <> TransactieType.Beiden Then query = query.Where(Function(p) p.TransactieType = transFilter.Value) End If If soortfilter.HasValue AndAlso soortfilter.Value <> Soort.All Then query = query.Where(Function(p) p.Soort = soortfilter.Value) End If Return View(query.ToList()) End Function