检查值是否已存在

时间:2012-05-03 17:55:46

标签: c# dictionary contains

我的词典里面有我的书:

Dictionary<string, book> books

Book definiton:

class book
{
    string author { get; set; }

    string title { get; set; }
} 

我在字典中添加了一些书籍。

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

4 个答案:

答案 0 :(得分:32)

books.ContainsKey("book name");

答案 1 :(得分:26)

如果您没有使用图书标题作为密钥,那么您必须枚举值并查看是否有任何图书包含该图书。

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 :(得分:6)

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

bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));

答案 3 :(得分: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