データがCSVファイルを書き込む.NETジェネリックコレクション

1.機能クラス

システムを使用しました。
System.Collections.Genericを使用しました。
System.ComponentModelを使用しました。
System.IOを使用しました。
System.Linqのを使用しました。
するSystem.Reflectionを使用しました。
System.Textのを使用しました。
System.Threading.Tasksを使用しました。

名前空間インフラストラクチャ
{
    パブリック静的クラスFileExtensions
    {
        パブリック静的ブールEnsureDirectory(文字列のパス)
        {
            場合(Directory.Exists(パス)!)
            {
                Directory.CreateDirectory(パス);
            }
            trueを返します。
        }

        パブリック静的ブールのCreateFile(文字列フォルダ、文字列のファイル名、文字列fileExtension)
        {
            EnsureDirectory(フォルダ)。
            文字列filePathに= Path.Combine(フォルダ、String.Formatの( "{0} {1}。"、ファイル名、fileExtension))。
            (FileStreamをFILESTREAM =新規のFileStream(filePathに、FileMode.Create))を使用して、
            {}
            trueを返します。
        }

        SaveToCsv <T>(IEnumerableを<T>配列、文字列ファイルパス)BOOLパブリック静的
        {
            BOOLフラグ= TRUE。
            試す
            {
                StringBuilderのstringBuilderColumn =新しいStringBuilderの();
                StringBuilderのstringBuilderValue =新しいStringBuilderの();

                型タイプ= typeof演算(T)。
                オブジェクトOBJ = Activator.CreateInstance(タイプ)。
                PropertyInfo []は小道具= type.GetProperties(BindingFlags.Public | BindingFlags.Instance)。

                props.ToList()のForEach(X => stringBuilderColumn.Append(String.Formatの( "{0}"、x.Name)))。
                stringBuilderColumn.Remove(stringBuilderColumn.Length - 1、1)。

                使用(のStreamWriterのStreamWriter =新規のStreamWriter(filePathに))
                {
                    streamWriter.WriteLine(stringBuilderColumn)。
                    array.ToList()のForEach(X =>
                    {
                        stringBuilderValue.Remove(0、stringBuilderValue.Length);
                        TypeDescriptor.GetPropertiesでforeachの(のPropertyDescriptorのPD(typeof演算(T)))
                        {
                            stringBuilderValue.Append(String.Formatの( "{0}"、pd.GetValue(X)== NULL pd.GetValue(X):。pd.GetValue(X).ToString()(置き換え」、 '' 、 ')));
                        }
                        stringBuilderValue.Remove(stringBuilderValue.Length - 1、1)。
                        streamWriter.WriteLine(stringBuilderValue)。
                    });
                }
            }
            キャッチ
            {
                フラグ= FALSE。
            }
            フラグを返します。
        }
    }
}
2.调用方式

リスト<T>項目=新しいリスト<T>();

アイテムの割り当てのXXX //セット

文字列のファイルパス= XXX; //ファイルストレージ・パス

FileExtensions.SaveToCsv(項目、filePathに); //メソッドを呼び出します

おすすめ

転載: www.cnblogs.com/jeff151013/p/11739335.html