2017-10-26 4 views
3

Im Moment habe ich eine FilterDefinition mit diesem haben:Filterdefinition mit einem Array-Parameter (SQL: WHERE IN)

public class PurposeFilter:FilterDefinition 
{ 
    public PurposeFilter() 
     : base(NHibernateFilters.PurposeFilter, "PurposeId = :purposeId", 
     new Dictionary<string, IType> { { "purposeId", NHibernateUtil.Int64 } }, false) 
    {} 
} 

Dies fügt einen WHERE PurposeId = <someId> zum SQL erzeugt. Ich möchte jedoch Unterstützung für mehrere IDs hinzufügen, so dass das resultierende SQL wäre WHERE PurposeId IN (<someId>, <someOtherId>). Ich habe den folgenden Code (der nicht funktioniert) - irgendwelche Vorschläge, wie man das unterstützt?

public class MultiPurposeFilter : FilterDefinition 
{ 
    public MultiPurposeFilter() 
     : base(NHibernateFilters.MultiPurposeFilter, "PurposeId IN (purposeIds)" 
      , new Dictionary<string, IType> { { "purposeIds", NHibernateUtil.Int64 } }, false) 
    { 

    } 
} 
+1

Haben Sie "PurposeId IN (: purposeIds)" und "SetParameterList" versucht, die Werte zu setzen? – Najera

+0

@Najera: Das war einfach ... und es funktioniert ... Danke! Bitte wandle deinen Kommentar in eine Antwort um und ich werde es genehmigen ;-) – Goblin

Antwort

1

Ich habe noch nicht versucht, aber Sie können PurposeId IN (:purposeIds) und SetParameterList Methode verwenden, um die Werte einzustellen.