verificar si el valor ya existe
Frecuentes
Visto 77,953 veces
25
Tengo un diccionario que contiene mis libros:
Dictionary<string, book> books
Definición de libro:
class book
{
string author { get; set; }
string title { get; set; }
}
He añadido algunos libros al diccionario.
¿Cómo puedo comprobar si hay un libro en el Diccionario que coincida con el título proporcionado por el usuario?
4 Respuestas
36
Si no está utilizando el título del libro como clave, tendrá que enumerar los valores y ver si algún libro contiene ese título.
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
}
O puede usar LINQ:
books.Any(tr => tr.Value.title.Equals("some title", StringComparison.CurrentCultureIgnoreCase))
Si, por otro lado, está utilizando el título del libro como clave, simplemente puede hacer:
books.ContainsKey("some title");
contestado el 03 de mayo de 12 a las 19:05
GRACIAS, su primer código ayudó, eso viene a LINQ, nunca lo había probado antes: bublik
Hay .ContainsValue actualmente en la versión más reciente de .net framework. Ver @ msdn.microsoft.com/en-us/library/a63811ah(v=vs.110).aspx - nkalfov
6
Si tiene permiso para usar LINQ, intente usar el siguiente código:
bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
contestado el 03 de mayo de 12 a las 19:05
2
En su diccionario, ¿la clave contiene el título? Si es así, use ContainsKey
como responde el otro. Si la clave es algo completamente diferente y desea verificar el valor (objeto del libro) title
atributo, tendrías que hacerlo manualmente así:
foreach(KeyValuePair<string,book> kvp in books) {
if (kvp.Value.title == "some title")
return kvp.Key;
}
return String.Empty; //not found
contestado el 03 de mayo de 12 a las 19:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# dictionary contains or haz tu propia pregunta.
¿Qué valor está proporcionando para la parte 'cadena' de ' '? - zimdanen