检查值是不是已经存在
Posted
技术标签:
【中文标题】检查值是不是已经存在【英文标题】:check if value already exists检查值是否已经存在 【发布时间】:2012-05-13 06:55:54 【问题描述】:我有一本字典,里面有我的书:
Dictionary<string, book> books
书籍定义:
class book
string author get; set;
string title get; set;
我在字典中添加了一些书。
如何检查词典中是否有与用户提供的书名相匹配的书?
【问题讨论】:
你为'books.ContainsKey("book name");
【讨论】:
他想知道它是否包含一本我认为具有已知标题属性的书(字典的值),而不是字典键。【参考方案2】:如果您不使用书名作为键,那么您将不得不枚举值并查看是否有任何书包含该书名。
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");
【讨论】:
谢谢,您的第一个代码帮助了 LINQ,我之前从未尝试过 .ContainsValue 目前在较新版本的 .net 框架中。见@msdn.microsoft.com/en-us/library/a63811ah(v=vs.110).aspx【参考方案3】:在您的字典中,键是否包含标题?如果是,请使用ContainsKey
作为其他答案。如果键完全是其他东西,并且您想检查值的(Book 对象的)title
属性,则必须像这样手动进行:
foreach(KeyValuePair<string,book> kvp in books)
if (kvp.Value.title == "some title")
return kvp.Key;
return String.Empty; //not found
【讨论】:
【参考方案4】:如果允许使用 LINQ,请尝试使用以下代码:
bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
【讨论】:
以上是关于检查值是不是已经存在的主要内容,如果未能解决你的问题,请参考以下文章