无法找出此CSV拆分逻辑

时间:2016-05-25 16:49:28

标签: c# csv logic

我知道如何在C#中拆分.CSV文件,并且有一个程序可以这样做。 我的问题是我想要做的下一个任务的逻辑。

我有这个数据

Name         AddressName       AddressContact  AddressType  Address

Ap Services  Main address      Ap Services A/S1   50        789 E 5300 S
Ap Services  BILLING           Ap Services A/S2   20        123 W 5200 S
Ap Services  Shipping address  Ap Services A/S3   10        456 N 5100 S

我的CSV中有很多文件没有重复,因为它们的字段不同,但它们具有相同的Name。我想简单地将名称只打印一次,同时将新列放在最后以容纳其他字段。列必须是新的,但我认为它更容易将它们放在行的.length的末尾。

这就是我希望将输出CSV文件格式化为:

Name         AddressName       AddressContact  AddressType  Address   AddressContact2 AddressType2 Address2  AddressContact3 AddressType3  Address3
 Ap Services Main address      Ap Services A/S1   50        789 E 5300 S   Main address      Ap Services A/S1   50        789 E 5300 S   Main address      Ap Services A/S1   50        789 E 5300 S

我正在使用C#,无法弄清楚我需要用来执行此操作的逻辑或循环。 我需要读取文件,以这种方式拆分,然后打印出来,每个客户名称只显示一次,同时将信息全部放在一行。

有谁知道我怎么做到这一点?

我的C#代码

static void Main(string[] args)
    {
        String path = "C:\\Desktop\\";
        String file2 = "customerListAll.csv";
        String file3 = "finalCustomerList.csv";
        ArrayList arrayList1 = new ArrayList();
        ArrayList arrayList2 = new ArrayList();
        //ArrayList al3=new ArrayList();
        String[] dataArray1;
        String[] dataArray2;

        Dictionary<String, String> badCustomers = new Dictionary<string, string>();

        StreamWriter output = new StreamWriter(path + file3);

        TextFieldParser CSVFile2 = new TextFieldParser(path + file2);
        CSVFile2.SetDelimiters(",");
        dataArray2 = CSVFile2.ReadFields();

        int count = 0;
        while (!CSVFile2.EndOfData)
        {
            if (!badCustomers.ContainsKey(dataArray2[0]))
            {
                String record = String.Empty;
                for (int i = 0; i < dataArray2.Length; i++)
                {
                    if (dataArray2[i].Contains(","))
                    {
                        string x = "\"" + dataArray2[i] + "\"";
                        record += x;
                    }
                    else
                    {
                        record += dataArray2[i];
                    }
                    if (i < dataArray2.Length - 1)
                    {
                        record += ",";
                    }
                }
                count++;
                if (count % 50 == 0)
                {
                    Console.WriteLine(count);
                }
                output.WriteLine(record);
            }
            dataArray2 = CSVFile2.ReadFields();
        }
        CSVFile2.Close();
        Console.Read();
    }
}
}

1 个答案:

答案 0 :(得分:0)

在C#中有多种方法可以实现这一点,其中非常基本和简单如下。

  1. 读取所有CSV文件并将其存储在单独的数据表中 任何你想要的标题。
  2. 根据您的共同领域加入这些单独的表格 (在你的情况下'姓名')
  3. 之后从此数据表中检索所需的输出 加入。