检查值是不是已经存在

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; 
 

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

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

【问题讨论】:

你为''的'string'部分提供了什么价值? 【参考方案1】:
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"));

【讨论】:

以上是关于检查值是不是已经存在的主要内容,如果未能解决你的问题,请参考以下文章

在添加Flask,SQLAlchemy之前检查表中的行中的值是不是已经存在

检查两个值是不是存在并返回命名布尔值

使用 C# 检查 List 中是不是存在值

CodeIgniter - 检查数据库中是不是已存在值

检查值是不是存在的过程

检查 IPC 消息队列是不是已经存在而不创建它