21

リストからcsvファイルを作成するのを手伝ってくれる人はいますか、私のシナリオは、リストに以下のような多次元値があります

List<string[]> lst = new List<string[]>();
lst= csv1.ToList();

lst には次のような値が含まれます。

lst[0] = {string[53]}
lst[1] = {string[53]}
lst[2] = {string[53]}
lst[3] = {string[53]}
lst[4] = {string[53]}

string[53] には次のような値が含まれます

lst[0]
    string[0] = "abc"
    string[1] = "def"
    string[2] = "ghi"
    string[3] = "jkl"
    string[4] = "mno"
    ...
lst[1]
    string[0] = "123"
    string[1] = "456"
    string[2] = "789"
    string[3] = "10"
    string[4] = "11"
    ...

この多次元リストをcsvファイルに、lst []の各アイテムをcsvの行に、string []の各アイテムを列に書き込んで、csvの最終出力が

abc,def,ghi,jkl,mno
123,456,789,10,11

どんな助けでも本当に感謝しています。

4

2 に答える 2

33

linqを使用します:

File.WriteAllLines("text.txt", lst.Select(x => string.Join(",", x)));
于 2012-12-11T07:41:52.283 に答える
29

最も単純なレベルでは、引用符/エスケープ/複数行のCSVの問題を処理せずに、ループします。多分次のようなものです:

    using (var file = File.CreateText(path))
    {
        foreach(var arr in lst)
        {
           file.WriteLine(string.Join(",", arr));
        }
    }

または少し効率的(中間文字列なし):

    using (var file = File.CreateText(path))
    {
        foreach (var arr in lst)
        {
            if (String.IsNullOrEmpty(arr)) continue;
            file.Write(arr[0]);
            for(int i = 1 ; i < arr.Length ; i++)
            {
                file.Write(',');
                file.Write(arr[i]);
            }
            file.WriteLine();
        }
    }
于 2012-12-11T07:39:45.600 に答える