Ti consiglio di iniziare fin da subito a studiarti le query LINQ con le lemda expression, sono estremamente versatili, più veloci ed intuitive.
In VB la sintassi è un po' più articolata rispetto al C# dove è veramente molto semplice, comunque una volta che ci ha preso la mano ne vedi la differenza.
Altro piccolo consiglio, se posso, fatti una serie di service con i metodi più utilizzati nella procedura e richiama sempre quelli, in modo che il codice lo centralizzi, li dividi per macro aree tipo questa dei comuni potrebbe stare in una zona relativa alle anagrafiche e quindi con tutto quello che serve per lavorarci.
Tornando all'esempio sopra una cosa del genere potresti farla ad esempio così
ps.: io al 95% lavoro in C#, quindi se ho scritto qualche castroneria a livello di sintassi perdonami, ma concettualmente questo è quello che intendevocodice:public function GetComuni(optional byval regioneID as integer? = null) as List(Of Comuni) Dim result = _dbContext.set(Comuni).ToList() if regioneID IsNot Nothing AndAlso regioneID > 0 Then result = result.Where(Function(r) r.regioneID == regioneID).ToList() End If return result End Function