Lors de la préparation de la conférence NAV201 : Découvrez comment combiner des développements WPF, Silverlight et Azure avec l'architecture orientée services de Microsoft Dynamics CRM, nous avons, avec David Rei, réalisé deux clients pour interroger le WebService CRM. Le premier en WPF et le second en Silverlight.
Il y avait quelques synergies entre les deux clients. En voulant reproduire une requête Linq mise au point par David (j'allais quand même pas la réinventer :p), je me suis simplement aperçu que la méthode Exists(Func<T>) des Listes génériques n'existait tout simplement pas dans le Framework Silverlight 2.

Un petit coup de reflector sur le Framework SL2 :

Ce que l’on peut noter c’est que la version de la mscorlib dans le Framework SL est en version 2.0.5.0 alors que dans le Framework 2 elle est en version 2.0.0.0…
Le quoi qu’on fait alors ?
Une petite méthode d’extension :
public static class Extensions
{ public static bool Exists<T>(this IEnumerable<T> lstCourse,
Func<T, bool> predicate)
{ foreach (var item in lstCourse)
{ if (predicate(item))
return true;
}
return false;
}
}
Comme me l’a, justement fait remarqué Adrien Siffermann, une boucle c’est pas super propre, on peut donc aussi faire ça :
public static class Extensions
{ public static bool Exists<TSource>(this IEnumerable<TSource> lstTSource,
Func<TSource, bool> predicate)
{ return (lstTSource.FirstOrDefault(predicate) != null);
}
}
Ca c’est fait…