2016-04-27 3 views
0

Ich muss eine Sammlung mit dynamischen Eigenschaften Auswahl filtern.Wie kann ich eine Liste mit dynamischen Eigenschaften Auswahl in C# filtern?

Beispiel:

public class NotificationListModel : Observable 
{ 
    private string _QMTXT; 

    public string QMTXT 
    { 
     get { return _QMTXT; } 
     set { _QMTXT = value; RaisePropertyChanged("QMTXT"); } 
    } 
    private string _PRIOK; 

    public string PRIOK 
    { 
     get { return _PRIOK; } 
     set { _PRIOK = value; RaisePropertyChanged("PRIOK"); } 
    } 
    private string _ARBPL; 

    public string ARBPL 
    { 
     get { return _ARBPL; } 
     set { _ARBPL = value; RaisePropertyChanged("ARBPL"); } 
    } 
    private string _id; 

    public string id 
    { 
     get { return _id; } 
     set { _id = value; RaisePropertyChanged("id"); } 
    } 

}

Und ich habe eine Sammlung NotificationCollection, ein paar Aufzeichnungen ist mit, so muss ich diese Sammlung mit unterschiedlichen Eigenschaften filtern, und diejenigen, die nicht wie unten festgelegt,

Beispiel 1:

var Result = NotificationCollection.Where(w =>(w.QMTXT=="1" || w.QMTXT=="2") && w.PRIOK == "1").ToList(); 

exampl e2:

var Result = NotificationCollection.Where(w =>w.id=="1" && w.PRIOK == "1").ToList(); 

Hier, während die Eigenschaften Liste Filterung wird dynamisch filtern kann mit QMTXT oder Priok oder eine Kombination von QMTXT und Priok und einige andere Eigenschaft. Wie kann ich es erreichen? Ich habe viele Nachforschungen gemacht Ich wusste, dass wir dies tun können, indem wir Reflektion verwenden, aber ich habe nicht so viel Spielraum bei Reflection.

Ihre Hilfe ist sehr spürbar. Vielen Dank im Voraus.

Antwort

0

System.Linq.Dynamic kann für Sie sein: https://dynamiclinq.codeplex.com/documentation Ich hatte vor kurzem ein ähnliches Problem mit der Anweisung ORDER BY über Linq. Mit Linq.Dynamic war es möglich, die Reihenfolge der Felder und die Kriterien für jedes zu ändern.

Verwandte Themen