Ik ben bezig met een systeem wat afhankelijk van de situatie een vergelijkbare set data moet querien, maar met verschillende filters. Die filters worden door een aantal verschillende methodes beinvloed en dan na de query uiteindelijk toegepast op volgorde. Dit is mijn oplossing daarvoor:
Dit wordt aangeroepen op een query op ongeveer deze manier:
Nu heb ik niet zo veel ervaring met linq, dus ik vraag me af of hier nog performance issues aan te zien zijn. Het aantal filters zal denk ik nooit groter worden dan ~10, maar het liefst wordt de query zo snel mogelijk samengesteld en uitgespuugd. Deugt deze code?
code:
1
2
3
4
5
6
7
8
9
| <Extension>
Public Function Filter(Of T As Class)(query As IQueryable(Of T), filters As Stack(Of String)) As IQueryable(Of T)
Dim sfilter As String
While filters.Count > 0
sfilter = filters.Pop()
query = query.Where(sfilter)
End While
Return query
End Function |
Dit wordt aangeroepen op een query op ongeveer deze manier:
code:
1
| activitiesData = activitiesData.Filter(filters).OrderBy(sortString).Skip(skip).Take(take).ToList() |
Nu heb ik niet zo veel ervaring met linq, dus ik vraag me af of hier nog performance issues aan te zien zijn. Het aantal filters zal denk ik nooit groter worden dan ~10, maar het liefst wordt de query zo snel mogelijk samengesteld en uitgespuugd. Deugt deze code?
"I don't always test my code, but when I do, I test on production."