J'ai les possibilités suivantes pour récupérer des valeurs dans une liste :
en utilisant la réflexion :
foreach (var item in items) {
var property=item.Fields[fieldName].GetType().GetProperty("Id");
var value=property.GetValue(item.Fields[fieldName]);
if (value==searchValue) {
filtered.Add(item);
}
}
en utilisant la dynamique :
foreach (var item in items) {
dynamic itemProperty=item.Fields[fieldName];
if (itemProperty.Id==searchValue) {
filtered.Add(item);
}
}
Les deux boucles font la même chose. Elles filtrent l'IEnumerable (ou la liste) par Field[fieldName] qui peuvent être de différents types mais qui contiennent tous une propriété int appelée "Id".
Je me demande lequel des deux aurait les meilleures performances. En outre : Le fait de changer l'une d'entre elles pour une LinQ-Query augmenterait-il les performances ?