J'ai une liste d'activités. Dans la classe d'activité est une propriété d'identification (un guide pour les arguments à l'esprit). Je veux vérifier si cette liste a une activité avec un guide que j'ai. Plutôt que ceci:
foreach(Activity activity in ActivityList) { if(activity.Id == GuidToCompare) //Code here }
8 Réponses :
Jetez un coup d'œil à la linq, vous pouvez remplacer avec votre code par: ActivityList.any (i => i.id == guidtocompare); code> p> p>
foreach(var activity in ActivityList.Where(p=>p.Id == GuidToCompare)) { // Code here }
sûr.
//var act = ActivityList.Where(a => a.Id == GuidToCompare).SingleOrDefault(); // clearer var act = ActivityList.SingleOrDefault(a => a.Id == GuidToCompare); // shorter if (act != null) { //Code here }
Je n'ai pas testé cela mais je suis assez sûr que cela devrait fonctionner: msdn tout: http://msdn.microsoft.com/en-us/library/bb534972.aspx p> p>
Juste pour vous offrir toutes les manières que vous pouvez écrire cette requête avec maintenant, il vous appartient de choisir l'extrait plus lisible;) p> p> linq code>
Si vous ne recherchez qu'une seule pièce d'identité une fois, il n'y a pas de moyen plus efficace.
Si vous recherchez des identifiants multiples fois, vous pouvez créer un hashset: P>
Dictionary<Guid, Activity> activities = ActivityList.ToDictionary(a => a.Id);
Pour trouver tous les objets d'activité avec le GUID donné que vous pouvez utiliser:
var results = ActivityList.FindAll(item => item.ID == GuidToCompare);
Pour ceux qui ne peuvent pas utiliser LINQ:
List<Activity> ActivityList = new List<Activity>(); foreach (Activity activity in ActivityList.FindAll(delegate(Activity a) { return a.Id == GuidToCompare; })) { //Code here }