26

私は自分の本を保持する辞書を持っています:

Dictionary<string, book> books

本の定義:

class book
{
    string author { get; set; }

    string title { get; set; }
} 

辞書にいくつかの本を追加しました。

ユーザーが提供したタイトルに一致する本が辞書にあるかどうかを確認するにはどうすればよいですか?

4

4 に答える 4

40
books.ContainsKey("book name");
于 2012-05-03T17:57:00.280 に答える
36

書籍のタイトルをキーとして使用していない場合は、値を列挙して、そのタイトルが含まれている書籍があるかどうかを確認する必要があります。

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");
于 2012-05-03T18:00:22.827 に答える
6

LINQ の使用が許可されている場合は、次のコードを使用してみてください。

bool exists = books.Any(b => (b.Value != null && b.Value.title == "current title"));
于 2012-05-03T18:06:44.653 に答える
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
于 2012-05-03T18:01:02.877 に答える