grâce à Rex M for this bit of wisdom spéciales:Je veux vérifier le nombre d'un IEnumerable mais c'est très inefficace. De l'aide?
public IEnumerable<Friend> FindFriends()
{
//Many thanks to Rex-M for his help with this one.
//https://stackoverflow.com/users/67/rex-m
return doc.Descendants("user").Select(user => new Friend
{
ID = user.Element("id").Value,
Name = user.Element("name").Value,
URL = user.Element("url").Value,
Photo = user.Element("photo").Value
});
}
Après avoir trouvé tous un amis utilisateurs, je dois leur montrer une forme WPF. J'ai un problème que tous les utilisateurs n'ont pas au moins 5 amis, certains n'ont même pas d'amis! Voici ce que j'ai:
private void showUserFriends()
{
if (friendsList.ToList().Count > 0)
{
friend1.Source = new BitmapImage(new Uri(friendsList.ToList()[0].Photo));
label11.Content = friendsList.ToList()[0].Name;
friend2.Source = new BitmapImage(new Uri(friendsList.ToList()[1].Photo));
label12.Content = friendsList.ToList()[1].Name;
//And so on, two more times. I want to show 4 friends on the window.
}
}
Donc, cette question comporte deux parties:
Comment proposez-vous que je Manipulez le nombre variable d'amis d'un utilisateur peut avoir. Avec mon code actuel si un utilisateur n'a pas d'amis, j'obtiens une exception IndexOutOfBounds parce que friendsList [0] n'existe pas.
Comment puis-je gérer plus efficacement la validation du fait qu'un utilisateur ait ou non des amis? Appeler .ToList() semble très taxant.
Ceci est une bonne optimisation locale. Cependant, il n'est même pas nécessaire de convertir en liste, puisque l'OP a déjà un 'IEnumerable', qui peut être itéré en utilisant' foreach'. –
Ah oui c'est vrai – aqwert
Bien que par les regards il a statiquement créé friend1, friend2 etc. ce qui pourrait rendre difficile l'utilisation foreach car il devrait y avoir des contrôles conditionnels supplémentaires quant à l'index que vous regardez. Ma première suggestion a gardé le nombre de changements à un simple refactoring – aqwert