C# - 只读取While循环的第一个字符

时间:2013-06-10 09:57:41

标签: c# list text while-loop streamreader

我一直在寻找大约一个小时,根本无法找到任何解决方案。我希望我的.txt文件中的每一行都添加到我的列表中,只要它以相同的数字开头即可。问题在于“line.Substring(0,1)”,我不知道如何解决它。也许你明白我想要实现的目标。

        using (StreamReader file = new StreamReader(schedulePathDays))
        {
            string line;
            while ((line.Substring(0, 1) = file.ReadLine()) == thisDay.ToString())
            {
                exercisesRow.Add(line);
            }
        }

3 个答案:

答案 0 :(得分:5)

您可以使用ReadLines然后使用LINQ过滤:

var result = File.ReadLines("yourPath")
                 .Where(line => line.StartsWith("1"));

ReadLines 延迟执行,因此可以在大文本文件中使用。

修改:要使用您的代码进行映射,请使用以下代码替换您的代码:

exercisesRow = File.ReadLines(schedulePathDays)
                   .Where(line => line.StartsWith(thisDay.ToString()))
                   .ToList();

答案 1 :(得分:0)

你的语法没有意义。您可能需要以下内容:

file.ReadLine().Substring(0,1)==thisDay.ToSTring()

我认为这是你想写的,尽管Cuong Le的回答可能更好(除了需要参数化)。

答案 2 :(得分:0)

您的Substring(0,1)位置错误。它应该在line被分配后出现。

//Altnerately: (...).Substring(0,1) instead of (...)[0]
while((line = file.ReadLine())[0] == thisDay.ToString()[0]){
    //code
}

要求尝试分配Substring方法的结果是没有意义的。