Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按文本文件中的内容筛选列表框_C# - Fatal编程技术网

C# 按文本文件中的内容筛选列表框

C# 按文本文件中的内容筛选列表框,c#,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

有人能解释一下为什么下面的代码没有过滤吗

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,整个函数称为“例程”。您真正需要的是该行的子字符串具有“例程”的行列表。例如

List res=lines.Where(x=>x.Contains(filter)).ToList();
listAppts.Items.Addrange(res);

问题在于:

if (lines.Contains(filter))
{
    listAppts.Items.Add(lines);
}
如果任何一行匹配,contains函数将返回true,整个函数称为“例程”。您真正需要的是该行的子字符串具有“例程”的行列表。例如

List res=lines.Where(x=>x.Contains(filter)).ToList();
listAppts.Items.Addrange(res);

以下是虚拟文本文件的内容:查理·布朗,2019年2月21日星期四,上午10:45,尼娜·布斯,常规薄荷馅饼,2019年2月21日星期四,下午2:30,尼娜·布斯,取消的露西·施罗德,2019年2月21日星期四,上午11:30,尼娜·布斯,日常可能重复的
字符串[]。Contains()
将查看您的字符串值(逐字)是否在数组中,而不是字符串本身是否包含您的筛选器值。我没有看到任何筛选器,请澄清您要执行的操作please@gunr2171-谢谢。我将检查一个更好的过滤方法。我很感激。这是虚拟文本文件的内容:查理·布朗,2019年2月21日星期四,上午10:45,尼娜·布斯,常规薄荷馅饼,2019年2月21日星期四,下午2:30,尼娜·布斯,取消了露西·施罗德,2019年2月21日星期四,上午11:30,尼娜·布斯,日常可能重复的
字符串[]。Contains()
将查看您的字符串值(逐字)是否在数组中,而不是字符串本身是否包含您的筛选器值。我没有看到任何筛选器,请澄清您要执行的操作please@gunr2171-谢谢。我将检查一个更好的过滤方法。谢谢,谢谢。这正是我需要的。我很感激。我不知道它是在寻找逐字匹配而不是子字符串。谢谢。这正是我需要的。我很感激。我没有意识到它是在寻找逐字匹配而不是子字符串。
    private void LoadAppointments()
{
    // load all "Routine" appointments into the listbox
    string[] lines = File.ReadAllLines(@"D:\appointments.txt");

    string filter = "Routine";

    var filteredLines = lines.Where(line => line.Contains(filter)).ToList();
}