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
}