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に); //メソッドを呼び出します