Souvent je me retrouve à remplir des répéteurs ASP.NET avec des éléments qui ont besoin de la classe CSS en fonction de l'index: 'first' pour l'index 0, 'last' pour l'index (length-1) et 'mid' au milieu:Y a-t-il une façon plus agréable/en ligne d'accomplir ce qui suit en C#/LINQ?
_repeater.DataSource = from f in foos
select new
{
...,
CssClass = MakeCssClass(foos, f)
};
private static string MakeCssClass(Foo[] foos, Foo f)
{
var index = Array.IndexOf(foos, f);
if(index == 0)
{
return "first";
}
else if(index == foos.Length - 1)
{
return "last";
}
else
{
return "mid";
}
}
Existe-t-il une meilleure façon de réaliser cela (par exemple en utilisant les fonctions lambda)? Si j'essaye je reçois CS0828, "ne peut pas assigner l'expression de lambda à la propriété de type anonyme".
Belle, merci. J'ai ajouté une méthode d'aide à SmartEnumerable.Entry: publique V FirstMidLast (V premier, V mi, V dernier) { if (IsFirst) { retour en premier; } sinon if (IsLast) { retour le dernier; } sinon { retour moyen; } } –
stusmith