首页 > 解决方案 > 按文本文件中的内容过滤列表框

问题描述

有人可以解释为什么下面的代码没有过滤吗?

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.
}

标签: c#

解决方案


问题在于:

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

推荐阅读