26

我有一本字典,里面有我的书:

Dictionary<string, book> books

书籍定义:

class book
{
    string author { get; set; }

    string title { get; set; }
} 

我在字典里加了一些书。

如何检查字典中是否有一本书与用户提供的标题相匹配?

4

4 回答 4

40
books.ContainsKey("book name");
于 2012-05-03T17:57:00.280 回答
36

如果您不使用书名作为键,那么您将不得不枚举值并查看是否有任何书包含该书名。

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");
于 2012-05-03T18:00:22.827 回答
6

如果您被允许使用 LINQ,请尝试使用以下代码:

bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
于 2012-05-03T18:06:44.653 回答
2

在您的字典中,键是否包含标题?如果是,ContainsKey请用作其他答案。如果键完全是其他东西,并且您想检查值的(Book 对象的)title属性,则必须像这样手动进行:

foreach(KeyValuePair<string,book> kvp in books) {
    if (kvp.Value.title == "some title")
        return kvp.Key;
}

return String.Empty; //not found
于 2012-05-03T18:01:02.877 回答