Проверить, существует ли значение
У меня есть словарь, в котором хранятся мои книги:
Dictionary<string, book> books
Определить книгу:
class book
{
string author { get; set; }
string title { get; set; }
}
Я добавил несколько книг в словарь.
Как проверить, есть ли в словаре Словарь, который соответствует заголовку, предоставленному пользователем?
Ответы
Ответ 1
Если вы не используете название книги в качестве ключа, вам придется перечислить значения и посмотреть, содержат ли какие-либо книги это название.
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
}
Или вы можете использовать LINQ:
books.Any(tr => tr.Value.title.Equals("some title", StringComparison.CurrentCultureIgnoreCase))
Если, с другой стороны, вы используете название книги в качестве ключа, тогда вы можете просто сделать:
books.ContainsKey("some title");
Ответ 2
books.ContainsKey("book name");
Ответ 3
Если вам разрешено использовать LINQ, попробуйте использовать приведенный ниже код:
bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
Ответ 4
В вашем словаре удерживает ли ключ заголовок? Если да, используйте ContainsKey
в качестве других ответов. Если ключ совсем другой, и вы хотите проверить атрибут value (Book object's) title
, вам нужно сделать это вручную следующим образом:
foreach(KeyValuePair<string,book> kvp in books) {
if (kvp.Value.title == "some title")
return kvp.Key;
}
return String.Empty; //not found