c# - 按文本文件中的内容过滤列表框
问题描述
有人可以解释为什么下面的代码没有过滤吗?
private void LoadAppointments()
{
// load all "Routine" appointments into the listbox
string[] lines = File.ReadAllLines(@"D:\appointments.txt");
string filter = "Routine";
// this part is not working. It isn't filtering by only showing
// "Routine" appointments in the listbox.
if (lines.Contains(filter))
{
listAppts.Items.Add(lines);
}
listAppts.Items.AddRange(lines);
// if I leave this out, nothing gets loaded, but if I add this
// line, everything gets loaded without being filtered.
}
解决方案
问题在于:
if (lines.Contains(filter))
{
listAppts.Items.Add(lines);
}
如果任何行完全匹配,则 contains 函数返回 true,即“Routine”。您真正需要的是该行的子字符串具有“常规”的行列表。例如。
List<string> res = lines.Where(x => x.Contains(filter)).ToList();
listAppts.Items.Addrange(res);
推荐阅读
- .net - 递归地将字符串拆分为字符列表
- java - java - 如何在Java中找到年月和日中的两个日期之间的差异?
- automata - 正则表达式:所有不包含子字符串 'bb' 的字符串的语言
- asp.net - ASP.Net Core - OAuth 令牌端点失败:状态:BadRequest
- sql-server - 在 JPA 实体的存储过程中使用别名
- c# - 如何从 c# 中的数据 Data Grid 视图中选中 false 值并将其存储在数据库 sql server 上
- android - 如何将flutter项目迁移到androidx
- google-cloud-platform - 从私有仓库创建实例模板
- c# - 使用 IdentityServer3 生成访问令牌,无需密码
- c# - 从另一个按钮调用 DataGridView 的 CellContentClick 方法