6
votes

Utilisation .Contains () sur une propriété dans une liste

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
}


0 commentaires

8 Réponses :


6
votes

Jetez un coup d'œil à la linq, vous pouvez remplacer avec votre code par: ActivityList.any (i => i.id == guidtocompare);


0 commentaires

1
votes
foreach(var activity in ActivityList.Where(p=>p.Id == GuidToCompare))
{

// Code here

}

0 commentaires

8
votes

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
}


0 commentaires

0
votes

Je n'ai pas testé cela mais je suis assez sûr que cela devrait fonctionner: xxx

msdn tout: http://msdn.microsoft.com/en-us/library/bb534972.aspx


0 commentaires

0
votes

Juste pour vous offrir toutes les manières que vous pouvez écrire cette requête avec linq xxx

maintenant, il vous appartient de choisir l'extrait plus lisible;)


0 commentaires

1
votes

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);


0 commentaires

1
votes

Pour trouver tous les objets d'activité avec le GUID donné que vous pouvez utiliser:

var results = ActivityList.FindAll(item => item.ID == GuidToCompare);


0 commentaires

0
votes

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
}


0 commentaires