0

我在搜索我的Arraylist. 数组列表存储有关多个团队的各种信息,例如他们徽标的图像路径和团队名称等。它是使用一个单独的数据文件填充的StreamReader

我希望用户Textbox从 Windows 表单中输入一些内容,例如团队名称,然后程序将在我的数组列表中搜索所述字符串并打开另一个表单,其中搜索团队的信息将加载到屏幕上使用Form.Load程序_

简而言之。

private void btn_Search_Click(object sender, EventArgs e)
{
   //what code do I write here?
}

我知道我可能对我目前的编码知识有点深入,因此将不胜感激。

编辑:不幸的是它必须在一个数组列表中,很抱歉给您带来不便。

4

3 回答 3

4

如果您可以使用 LINQ:

string nameToMatch = "Tigers"; //can you tell who's from Michigan?
List<Team> teams = new ArrayList<Team>();
//fill team data here

Team selected = teams.FirstOrDefault(t => t.TeamName.Equals(nameToMatch, StringComparison.OrdinalIgnoreCase));

像这样的东西应该工作。(这将与文本完全匹配,但允许搜索不区分大小写。您可以在此处阅读其他选项。)

如果你想匹配所有“部分匹配”的列表,你可以这样做:

List<Team> matchedTeams = teams.Select(t => t.TeamName.Contains(nameToMatch));

阅读此处以获取包含StringComparison枚举值的扩展重载。

于 2013-04-12T19:54:36.990 回答
1

如果您像我一样不熟悉 LINQ,您可以使用 foreach 循环。像这样的东西:

String nameToMatch = textBox1.text; //read from the text box
foreach (Object obj in Teams) 
{
   MyTeam team = (MyTeam)obj; //MyTeam is an object you could write that would store team information.
   if (team.TeamName.ToUpper() == nameToMatch.ToUpper()) //case insensitive search.
   {
       FormTeam frmTeam = new FormTeam(team); //windows form that displays team info.
       frmTeam.Visible = true;
       break; //if team names are unique then stop searching.
   }
}

最坏的情况非常糟糕,但至少对我来说,它比 LINQ 更容易理解。祝你好运,希望有帮助。

于 2013-04-12T20:10:26.733 回答
0

您可以使用一些这样的代码来填充您的数组列表:

    // ArrayList class object
    ArrayList arrlist = new ArrayList();

    // add items to arrlist collection using Add method
    arrlist.Add("item 1");
    arrlist.Add("item 2");
    arrlist.Add("item 3");
    arrlist.Add("item 4");
    arrlist.Add("item 5");

并使用像这样的一些代码在你的数组列表中搜索

string teamName= this.txtTeamName.Text;
// for loop to get items stored at each index of arrlist collection
for (int i = 0; i < arrlist.Count; i++)
{
    if(arrlist[i].toString()==teamName)
      // open a new form for show the found team details
}

更改“团队详细信息”表单的创建者以获得“团队名称”是一个很好的做法

frmTeamDetails(team myteam)

然后在上面的 FOR 语句中使用此代码:

frmTeamDetals frm=new frmTeamDetals(teamName);
frm.ShowDialog();
于 2013-04-12T20:37:32.433 回答