检查值是否已存在

Bub*_*lik 18 c# dictionary contains

我有字典拿着我的书:

Dictionary<string, book> books
Run Code Online (Sandbox Code Playgroud)

预定定义:

class book
{
    string author { get; set; }

    string title { get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

我在字典里添加了一些书.

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

Bre*_*dan 32

books.ContainsKey("book name");
Run Code Online (Sandbox Code Playgroud)

  • 他想知道它是否包含一本书(dictionnary的值),我认为它具有已知的标题属性,而不是字典键. (5认同)

SPF*_*ake 30

如果您没有使用书名作为键,那么您将必须枚举值并查看是否有任何书籍包含该标题.

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
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用LINQ:

books.Any(tr => tr.Value.title.Equals("some title", StringComparison.CurrentCultureIgnoreCase))
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您使用书籍标题作为关键字,那么您可以简单地执行以下操作:

books.ContainsKey("some title");
Run Code Online (Sandbox Code Playgroud)


Cha*_*nns 6

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

bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
Run Code Online (Sandbox Code Playgroud)