我需要一种方法来过滤列表的变量名称,我想像在文本框中一样快地更新过滤器。并将游戏添加到表单列表框。
列表的结构是:
public class Games
{
public string ID;
public string Name;
public string Password;
}
到目前为止,这是我的代码:
List<Games> games = new List<Games>();
private void textBox10_TextChanged(object sender, EventArgs e)
{
d2ngList.Items.Clear();
foreach(Games game in games)
{
//Filter List
d2ngList.Items.Add(game.Name);
}
}
答案 0 :(得分:2)
我没有在您的代码中看到任何过滤,所以可能是您的问题。您可以使用LINQ按名称过滤游戏:
private void textBox10_TextChanged(object sender, EventArgs e)
{
string filter = textBox10.Text;
d2ngList.Items.Clear();
foreach(Games game in games.Where(g => g.Name.Contains(filter)))
{
d2ngList.Items.Add(game.Name);
}
}
您还可以使用AddRange
方法优化代码:
string filter = textBox10.Text;
d2ngList.Items.Clear();
string[] names = games
.Where(g => g.Name.Contains(filter)).Select(g => g.Name).ToArray();
d2ngList.Items.AddRange(names);
答案 1 :(得分:0)
我想出了一个解决方案
private void textBox10_TextChanged(object sender, EventArgs e)
{
d2ngList.Items.Clear();
foreach(Games game in HandlerClass.Instance.Games)
{
if (!string.IsNullOrEmpty(textBox10.Text))
{
if (game.Name.Contains(textBox10.Text))
d2ngList.Items.Add(game.Name);
}
else
d2ngList.Items.Add(game.Name);
}
// games.Where(item => filterList.Contains(item));
}