我的词典里面有我的书:
Dictionary<string, book> books
Book definiton:
class book
{
string author { get; set; }
string title { get; set; }
}
我在字典中添加了一些书籍。
如何检查词典中是否有与用户提供的标题相匹配的书?
答案 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