C#Writeline它没有给我预期的结果

C#Writeline它没有给我预期的结果,c#,console.writeline,C#,Console.writeline,实际上,这是一个基本问题。 我试图读取CSV文件,并在控制台中只写入包含“Honda”字样的文件 这样,控制台就不会给出任何结果 但是向我展示所有结果的基本方法如下,它是有效的 class Program { static void Main(string[] args) { var reader = new StreamReader(File.OpenRead(@"C:\Users\Vitor\Downloads\LogCombustivel.csv"));

实际上,这是一个基本问题。
我试图读取CSV文件,并在控制台中只写入包含“Honda”字样的文件

这样,控制台就不会给出任何结果
但是向我展示所有结果的基本方法如下,它是有效的

class Program
{
    static void Main(string[] args)
    {
        var reader = new StreamReader(File.OpenRead(@"C:\Users\Vitor\Downloads\LogCombustivel.csv"));

        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            Console.WriteLine(line); 
        }

        Console.ReadLine();
    }
}

有关于我做错了什么的线索吗?

如果第一个元素是“Honda”,则以下代码将只显示一行:

如果您想加载包含“Honda”的每个元素,那么这是不对的。对此,可以使用Linq的
Contains()
方法

添加Linq的命名空间:

using System.Linq;
并使用以下代码,该代码将在数组中查找任何“Honda”元素:


以下代码仅在第一个元素为“Honda”时显示一行:

如果您想加载包含“Honda”的每个元素,那么这是不对的。对此,可以使用Linq的
Contains()
方法

添加Linq的命名空间:

using System.Linq;
并使用以下代码,该代码将在数组中查找任何“Honda”元素:


添加了用于搜索字符串的linq查询

class Program
{
    static void Main(string[] args)
   {
    var reader = new StreamReader(File.OpenRead(@"C:\Users\Vitor\Downloads\LogCombustivel.csv"));

    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');
        if (values.Any( x=> x == "Honda"))
        {
            Console.WriteLine(line);
        }
    }
    Console.ReadLine();
    }
}

添加了用于搜索字符串的linq查询

class Program
{
    static void Main(string[] args)
   {
    var reader = new StreamReader(File.OpenRead(@"C:\Users\Vitor\Downloads\LogCombustivel.csv"));

    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');
        if (values.Any( x=> x == "Honda"))
        {
            Console.WriteLine(line);
        }
    }
    Console.ReadLine();
    }
}

你只想要以“Honda”开头的行吗?是的,这是正确的,所以我想下面的答案没有帮助。你能发布实际的CSV吗?(只有几行)可能会有很多事情。仔细检查文件,或调试并检查阵列。一个明显的可能性是:<代码>值[0 ]。(本田)会更好。您应该考虑使用一个库来读取CSV文件,因为该值可以被引用,等等。也可以考虑使用<代码>文件> RealthRe> <代码>,而不是<代码> StreamReader <代码>(应该使用< /COD>块)<代码> >.你只想要以“Honda”开头的行吗?是的,没错,所以我想下面的答案没有帮助。你能发布实际的CSV吗?(只有几行)可能会有很多事情。仔细检查文件,或调试并检查阵列。一个明显的可能性是:<代码>值(0).Time=(本田)会更好。您应该考虑使用库来读取CSV文件,因为该值可以引用,也可以考虑使用<代码>文件> RealthRe> <代码>,而不是<代码> StreamReader < /C> >(应该在<代码>中使用 Array.IndexOf。(values,“Honda”)>=0或(使用Linq)
值。包含(“Honda”)
而不是带有谓词(
Func
)的任何),该谓词只检查是否相等。您可以使用
数组。IndexOf(values,“Honda”)>=0
或(使用Linq)
值。包含(“Honda”)
而不是带有谓词的任何(
Func
)只检查是否相等。
class Program
{
    static void Main(string[] args)
   {
    var reader = new StreamReader(File.OpenRead(@"C:\Users\Vitor\Downloads\LogCombustivel.csv"));

    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');
        if (values.Any( x=> x == "Honda"))
        {
            Console.WriteLine(line);
        }
    }
    Console.ReadLine();
    }
}