我在搜索Arraylist
时遇到问题。阵列列表存储有关许多团队的各种信息,例如其徽标的图像路径和团队名称等。它使用StreamReader
我希望用户从诸如团队名称之类的Windows表单中输入Textbox
中的内容,然后程序将搜索我的arraylist以查找所述字符串并打开另一个表单,其中搜索的信息团队将使用Form.Load
程序
简单地说。
private void btn_Search_Click(object sender, EventArgs e)
{
//what code do I write here?
}
我知道我可能会对我目前的编码知识有所了解,所以我们将不胜感激。
编辑:不幸的是,它必须是一个arraylist,抱歉给您带来不便。答案 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();