解析CSV文件中的字符串,将其与字符串数组进行比较以打印特定行

时间:2019-01-31 12:31:11

标签: c#

我有一个CSV,其中包含零件列表,以及不同的列,用于显示我们是否具有每个零件的不同生产步骤的图片。例如,第一列是零件名称,第二列是图案信息,等等。

我可以放入一天中可能要处理的部分数组。

我想将CSV解析为数组或其他内容,比较每行的第一列以查看其是否与当天零件列表中的任何内容匹配,然后从CSV中打印出整行数据,如果有比赛。

我已经在Matlab中做了类似的事情,但是由于没有Matlab的工作许可,我试图在C#中做到这一点,我对此很陌生,所以我对我需要做的事情有基本的了解,但是,我还没有真正理解用C#做到这一点的正确方法。

因此,我一直在尝试跟着我发现的一个解析CSV的示例,但是我只是有点不明白如何针对自己想要的内容修改它。

class Picture{
    public string Number;
    public string Pattern;
    public string Set;
    public string Mold;
    public string Wash;
    public string Core;
    public string Close;

    public static Picture FromLine (string line)
    {   

        var data = line.Split(',');
        return new Picture()
        {
             Number = data[0],
             Pattern = data[1],
             Set = data[2],
             Mold = data[3],
             Wash = data[4],
             Core = data[5],
             Close =data[6],
         };
    }
}

class Program
{
    static void Main(string[] args)
    {
        string[] partList = {"cd-6566","CC-0526"};
        args = new[]{"ProcessPics.csv"};
        var part = ReadPart(args[0]);
        Console.WriteLine("Hello World!");
        Console.WriteLine("Help");


    }

    static IList<Picture> ReadPart(string path)
    {
        var list = new List<Picture>();
        foreach (var line in File.ReadLines(path).Skip(1))
        {
            list.Add(Picture.FromLine(line));
            Console.WriteLine("check");
        }
        return list;
    }


}

1 个答案:

答案 0 :(得分:0)

在行循环中,您要检查partList中是否包含第一列(= Picture.Number):

    foreach (var line in File.ReadLines(path).Skip(1))
    {
        var picture = Picture.FromLine(line);
        if (!partList.Contains(picture.Number)) continue;
        list.Add(picture);
        Console.WriteLine("check");
    }