2015-09-19 105 views
0

我正在做一个学校项目“一个简单的地址簿,用户在文本框中输入姓名,地址,邮编,城市,电话和电子邮件,然后点击添加按钮并保存在一个文本文件中也显示在列表框中的新联系人C#从文本框中读取搜索结果并显示在列表框中

现在我可以按名称或城市进行搜索了我希望用户能够同时搜索名称和城市我该怎么做? 。代码

private void buttonSearch_Click(object sender, EventArgs e) 
    { 

     string searchTerm = textBoxSearch.Text.ToLower(); 


     List<Person> searchResult = People.FindAll(p => p.Name.ToLower().Contains(searchTerm) 
     || p.Postort.ToLower().Contains(searchTerm)); 


     listBoxPeople.Items.Clear(); 


     foreach (Person person in searchResult) 
     { 
      listBoxPeople.Items.Add(person.ToListBoxString()); 
     } 

     if(searchResult.Count==0) 
     { 
      MessageBox.Show("Not found info! try again!"); 
     } 
    }   
+0

那是通过名称或地点,或者你attemt搜索代码,名称和城市同时搜索? – Guffa

+0

我的代码现在用户可以通过名称或城市进行搜索但是我想让程序能够同时搜索名称和城市,例如用户输入Mark Newyork,然后程序总结所有联系人的名称标记和纽约。 – vanilaicy

+0

你是说用户输入一个名字和一个由空格分隔的城市?如何分割空间上的输入并在查询中使用字符串? – Guffa

回答

0

假设你坚持一个输入文本框的搜索字词:

// Get an array of search terms... search for as many as you like 
string[] searchTerm = textBoxSearch.Text.ToLower().Split(' '); 

List<Person> searchResult = new List<Person>(); 

foreach (string term in searchTerm) 
{ 
    searchResult.AddRange(People.FindAll(p => p.Name.ToLower().Contains(term) 
     || p.Postort.ToLower().Contains(term))); 
} 
0

我会做这样的事情(复制和粘贴准备):

private void buttonSearch_Click(object sender, EventArgs e) 
{ 
     string searchTerm = textBoxSearch.Text.ToLower(); 

     List<string> searchWords = new List<string>(searchTerm.Split(new char[] { ' ' })); 
     List<Person> searchResult = new List<Person>(); 

     foreach (string word in searchWords) 
     { 
      searchResult.AddRange(People.FindAll(p => p.Name.ToLower().Contains(word))); 
      searchResult.AddRange(People.FindAll(p => p.Postort.ToLower().Contains(word))); 
     } 

     listBoxPeople.Items.Clear(); 

     foreach (Person person in searchResult) 
     { 
      listBoxPeople.Items.Add(person.ToListBoxString()); 
     } 

     if (searchResult.Count == 0) 
     { 
      MessageBox.Show("Not found info! try again!"); 
     } 
} 
+0

您好,感谢您的帮助。我得到了错误lin foreach-loop为方法'Contains'包含Nooverload需要2个参数。我应该如何解决它? – vanilaicy

相关问题