J'ai un dictionnaire qui contient mes livres:
Dictionary<string, book> books
Définition du livre:
class book
{
string author { get; set; }
string title { get; set; }
}
J'ai ajouté des livres au dictionnaire.
Comment puis-je vérifier si un livre dans le dictionnaire correspond au titre fourni par l'utilisateur?
Si vous n'utilisez pas le titre du livre comme clé, vous devrez énumérer les valeurs et voir si un livre contient ce titre.
foreach(KeyValuePair<string, book> b in books) // or foreach(book b in books.Values)
{
if(b.Value.title.Equals("some title", StringComparison.CurrentCultureIgnoreCase))
return true
}
Ou vous pouvez utiliser LINQ:
books.Any(tr => tr.Value.title.Equals("some title", StringComparison.CurrentCultureIgnoreCase))
Si, par contre, vous utilisez le titre du livre comme clé, vous pouvez simplement faire:
books.ContainsKey("some title");
books.ContainsKey("book name");
Si vous êtes autorisé à utiliser LINQ, essayez d’utiliser le code ci-dessous:
bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
Dans votre dictionnaire, la clé contient-elle le titre? Si oui, utilisez ContainsKey
comme autre réponse. Si la clé est tout à fait autre chose et que vous voulez vérifier l'attribut title
de la valeur (objet Book), vous devez le faire manuellement comme ceci:
foreach(KeyValuePair<string,book> kvp in books) {
if (kvp.Value.title == "some title")
return kvp.Key;
}
return String.Empty; //not found