J'ai un objet générique qui utilise un dictionnaire pour stocker les propriétés:LINQ dynamique sur un objet générique (sans propriétés codées en dur)
class MyObject
{
Dictionary<string, object> Properties = new Dictionary<string, object>();
internal GetValue(string name) { return Properties[name]; }
internal SetValue(string name, object value) { Properties[name] = value; }
}
MyObject obj1 = New MyObject();
obj1.SetValue("Name", "John");
obj1.SetValue("Age", 23);
MyObject obj2 = New MyObject();
obj2.SetValue("Name", "Mary");
obj2.SetValue("Age", 24);
List<MyObject> ObjList = new List<MyObject>();
ObjList.Add(obj1);
ObjList.Add(obj2);
Maintenant, nous avons besoin d'interroger le OBJLIST pour trouver certaines entrées. Dynamic LINQ (Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)) semble être parfait, mais d'après ce que je peux voir, il faut que l'objet ait des propriétés prédéfinies.
Nous voulons faire des requêtes telles que:
ObjList.Where("Name == 'Mary' || Age < 24");
Tout jeton (par exemple Nom, âge) devrait appeler "GetValue". Aucune suggestion?
Évidemment, l'instruction where est complètement à la hauteur de l'utilisateur et n'est pas corrigée.
Wow, merci pour l'indice. En fait, je dirais que je pourrais utiliser un ExpandoObject à la place! –