Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用字典搜索功能_C#_Search_Generics_Dictionary - Fatal编程技术网

C# 通用字典搜索功能

C# 通用字典搜索功能,c#,search,generics,dictionary,C#,Search,Generics,Dictionary,我正在创建一个通用词典,它的作用类似于一个库,可以添加、删除和搜索图书,除了搜索功能外,我已经完成了这些功能 搜索功能有两个字段:书名和ISBN,我可以搜索带有ISBN的书籍,但无法搜索书名 这是我的搜索代码: private void Searchbtn_Click(object sender, EventArgs e) { string searchTerm = TitleBox.Text; if (ISBNBox.Text.Length == 5)

我正在创建一个通用词典,它的作用类似于一个库,可以添加、删除和搜索图书,除了搜索功能外,我已经完成了这些功能

搜索功能有两个字段:书名和ISBN,我可以搜索带有ISBN的书籍,但无法搜索书名

这是我的搜索代码:

private void Searchbtn_Click(object sender, EventArgs e)
    {
        string searchTerm = TitleBox.Text;

        if (ISBNBox.Text.Length == 5)
        {
            foreach (KeyValuePair<string, Book> b in books)
            {
                if (b.Value.ISBN == int.Parse(ISBNBox.Text))
                {
                    ISBNBox.Text = b.Value.ISBN.ToString();
                    TitleBox.Text = b.Value.Title.ToString();
                    chkLoan.Enabled = true;
                }
            }
        }
        else if (TitleBox.Text != "")
        {
            foreach (KeyValuePair<string, Book> b in books)
            {
                if (b.Value.Title.ToLower().Contains(searchTerm))
                {
                    ISBNBox.Text = b.Value.ISBN.ToString();
                    TitleBox.Text = b.Value.Title;
                    chkLoan.Enabled = true;
                }
            }
        }
        else
        {
            MessageBox.Show("Searching Requires the ISBN or Title field to be filled");
        }
    }
private void Searchbtn\u单击(对象发送者,事件参数e)
{
字符串searchTerm=TitleBox.Text;
如果(ISBNBox.Text.Length==5)
{
foreach(书本中的键值对b)
{
if(b.Value.ISBN==int.Parse(ISBNBox.Text))
{
ISBNBox.Text=b.Value.ISBN.ToString();
TitleBox.Text=b.Value.Title.ToString();
chkLoan.Enabled=true;
}
}
}
else if(TitleBox.Text!=“”)
{
foreach(书本中的键值对b)
{
if(b.Value.Title.ToLower().Contains(searchTerm))
{
ISBNBox.Text=b.Value.ISBN.ToString();
TitleBox.Text=b.Value.Title;
chkLoan.Enabled=true;
}
}
}
其他的
{
MessageBox.Show(“搜索需要填写ISBN或标题字段”);
}
}
我怎样才能得到我的搜索功能,让我搜索标题以及

我怎样才能开始搜索部分字符串呢?例如,我可以搜索“Cool”,而不是“Cool Story Bro”,它可以找到所有包含“Cool”的实例

编辑:利用我在这里学到的知识,我有一个完全有效的搜索功能:)

试试这个

foreach (KeyValuePair<string, Book> b in books)
{
    if (b.Value.Title.IndexOf(searchTerm,StringComparison.InvariantCultureIgnoreCase) >=0)
    {
        ISBNBox.Text = b.Value.ISBN.ToString();
        TitleBox.Text = b.Value.Title;
        chkLoan.Enabled = true;
    }
}
foreach(书本中的键值对b)
{
if(b.Value.Title.IndexOf(searchTerm、StringComparison.InvariantCultureIgnoreCase)>=0)
{
ISBNBox.Text=b.Value.ISBN.ToString();
TitleBox.Text=b.Value.Title;
chkLoan.Enabled=true;
}
}

方法给出给定字符串的第一个索引(如果找到的话),它允许我们搜索
不区分大小写的

您在那里的内容应该有效。正如黑暗猎鹰所建议的,尝试:

string searchTerm = TitleBox.Text.ToLower();

我可能在你的问题中遗漏了一个细节,但一般来说,如果你想对键和值进行关键字搜索,你可以这样做:

Dictionary<string, Book> d = new Dictionary<string, Book>();
//Fill dictionary
string searchterm = //get searchterm
List<Book> results = new List<Book>();
results.AddRange(from i in d where i.Key.Contains(searchterm) select i.Value);
results.AddRange(from i in d where i.Value.Title.Contains(searchterm) select i.Value);
//Print Results
Dictionary d=newdictionary();
//填充词典
字符串searchterm=//获取searchterm
列表结果=新列表();
results.AddRange(从i.Key.Contains所在的d中的i开始(searchterm)选择i.Value);
results.AddRange(从i.Value.Title.Contains所在的d中的i开始(searchterm)选择i.Value);
//打印结果

显然,“酷故事兄弟”不会包含“酷”。您是否尝试将搜索词设置为小写?我现在也添加了搜索函数来搜索小写。
不区分大小写
的意思是什么?即使string1是大写,string2是小写,它也会匹配,反之亦然。