gpt4 book ai didi

c# - 使用子字符串搜索对象书的字典值

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:35 25 4
gpt4 key购买 nike

我有一个带有几个按钮(添加书籍、删除书籍、搜索等)的图书馆 GUI,它使用字典。 Book 构造函数有 2 个参数,ISBN 和书名。我有 2 个文本框,在添加之前询问用户 ISBN 和标题。我正在使用 library[ISBNtext.Text] = new Book(ISBNtext.Text, TITLEtext.Text); 创建新书并将它们添加到字典中。我需要搜索按钮来按 ISBN 或使用子字符串按标题搜索字典中的书籍(搜索“cat”将返回“How to look after your cat”)。

我的代码如下:

private void searchButton_Click(object sender, EventArgs e)
{
libraryList.Items.Clear();

foreach (KeyValuePair<string, Book> book in library)
{
if (book.Key.Contains(ISBNtext.Text) || book.Value.Title.Contains(TITLEtext.Text))
{
libraryList.Items.Add(String.Format("{0} = {1}", book.Key, book.Value.Title));
}
}

ISBNtext.Clear();
TITLEtext.Clear();
}

如果我添加一些简单的书籍(ISBN:1 - TITLE:1,ISBN:2 - TITLE:2,ISBN:3 - TITLE:3 等)并搜索 1,它只会显示所有具有已添加,而不仅仅是我搜索的那个。

我还应该提到这是为学校准备的,所以我不确定我是否可以使用任何图书馆或任何东西。

最佳答案

我认为其他答案可能已经解决了您代码中的问题,但是如果您被要求使用字典,您应该考虑是否应该充分利用它提供的方法。

字典的目的是通过键提供对存储对象的快速查找,与完整搜索列表相比可以节省时间。

作为示例,我已将您的搜索分解为下面两个单独的搜索。第一个匹配完整的 ISBN 号(如果提供)并使用字典的键作为快速查找。第二个是较慢的标题搜索,您可以使用已有的代码(只需删除其中的 ISBN 部分)。

private void searchButton_Click(object sender, EventArgs e)
{
libraryList.Items.Clear();

// ISBN number search
var isbnNo = ISBNtext.Text;
if (!string.IsNullOrEmpty(isbnNo)){
if (library.ContainsKey(isbnNo)){
var book = library[isbnNo];
libraryList.Items.Add(String.Format("{0} = {1}", book.ISBNNo, book.Title));
}
}

// Title search
var titleText = TITLEtext.Text;
if (!string.IsNullOrEmpty(titleText)){
foreach (KeyValuePair<string, Book> book in library)
{
// search based on title like your existing code
}
}

ISBNtext.Clear();
TITLEtext.Clear();
}

关于c# - 使用子字符串搜索对象书的字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34368601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com