c#arraylist搜索混乱

时间:2013-04-12 19:47:08

标签: c# search arraylist

我在搜索Arraylist时遇到问题。阵列列表存储有关许多团队的各种信息,例如其徽标的图像路径和团队名称等。它使用StreamReader

从单独的数据文件中填充

我希望用户从诸如团队名称之类的Windows表单中输入Textbox中的内容,然后程序将搜索我的arraylist以查找所述字符串并打开另一个表单,其中搜索的信息团队将使用Form.Load程序

加载到屏幕上

简单地说。

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

我知道我可能会对我目前的编码知识有所了解,所以我们将不胜感激。

编辑:不幸的是,它必须是一个arraylist,抱歉给您带来不便。

3 个答案:

答案 0 :(得分: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));

这样的事情应该有效。 (这将完全匹配文本,但允许搜索不区分大小写。您可以阅读其他选项here。)

如果您想匹配所有“部分匹配”的列表,您可以改为:

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

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

答案 1 :(得分: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更容易理解。祝你好运,希望有所帮助。

答案 2 :(得分:0)

你可以使用这样的代码来填充你的arraylist:

    // 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");

并使用这样的代码在你的arraylist中搜索

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
}

最好更改“团队详细信息”表单的cunstractor以获得“团队名称”

frmTeamDetails(team myteam)

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

frmTeamDetals frm=new frmTeamDetals(teamName);
frm.ShowDialog();