2017-05-05 1 views
2

Ich habe eine Entität, die einige Eigenschaften hat. Ich habe Kategorie Attribut verwendet, um ähnliche Eigenschaften zu kategorisieren together.`Gleiche Kategorie Attribute in einer Entität zu einem Wörterbuch in C#

 [System.ComponentModel.Category("cat_name1")] 
     public string propname1 { get; set; } 
     [System.ComponentModel.Category("cat_name2")] 
     public string propname2 { get; set; } 

Ich möchte diese Eigenschaften zu einem Wörterbuch Objektschlüssel als Kategorie erhalten und Wert einer Eigenschaftsliste

Dictionary<string, List<PropertyInfo>> variable_name= TypeDescriptor.GetProperties(new entityClass()) 
.Cast<PropertyDescriptor>() 
    .ToDictionary(s =>s.Category,TypeDescriptor.GetProperti[enter image description here][1]es(new entityClass()) 
    .Cast<PropertyDescriptor() 
    .GroupBy(p=>p.Category).ToList<PropertyInfo>()); 

Ich bekomme diesen Fehler

Antwort

0

Hier ist ein Ansatz, der Dictionary<string, List<string> erstellen wird. Schlüssel sind Kategorienamen und Werte werden eine Liste von Zeichenfolgen sein (falls Sie zwei oder mehr Eigenschaften mit derselben Kategorie haben).

EntityClass entityClass = new EntityClass(); 
entityClass.propname1 = "abc"; 
entityClass.propname2 = "def"; 

System.ComponentModel.PropertyDescriptorCollection pdc = System.ComponentModel.TypeDescriptor.GetProperties(entityClass); 
var dict = pdc.OfType<PropertyDescriptor>().GroupBy(x => x.Category).ToDictionary(x => x.Key, x => x.Select(p => p.GetValue(entityClass).ToString()).ToList()); 

EDIT: Ich bin mir nicht sicher, ob dies das Ergebnis ist, dass Sie wegen der schlechten Frage Format/Struktur wollten. Bitte versuchen Sie es etwas beim nächsten Mal besser zu erklären ..

+0

Es funktioniert !!! Vielen Dank... !!! statt Eigenschaftswert wollte ich Eigenschaftsnamen .. aber ich dachte es ... Danke nochmal –

0

Dies ist, was ich getan habe ..

Dictionary<string, Dictionary<string, AttributeCollection>> testingSectionFields = 
       TypeDescriptor.GetProperties(new PP_MainDataEntity()) 
       .OfType<PropertyDescriptor>().ToList() 
       .GroupBy(cat => cat.Category) 
       .ToDictionary(c => c.Key, c1 => c1.ToDictionary(fld => fld.Name, fld1 => fld1.Attributes)); 

Wich retreives Entitätseigenschaften -> Gruppe sie nach Kategorie Attribut -> Holen Sie sich alle Attribute für diese Eigenschaft :)

Verwandte Themen