まず、「XML/JSON/YAMLフォーマットがあり、どのように動作するか知っています。しかし、今私はCSV
フォーマットファイルにエクスポートする作業に直面している。私はウィキペディアにCSVについて読んだCSVフォーマットが間違っている
は、CSVのトピックにStackOverflowのを検索し、答えを見つけることができませんでした。
私が読んだとおり、これは将来のExcelテーブルの表示に一般的なフォーマットです。 私がValueType
のプロパティを持つ単純なクラスを持っていれば、それだけです。
public class MyClass
{
public int ID { get; set; }
public string Name { get; set; }
public string ToCsvString()
{
return string.Format("{0};{1}", ID, Name);
}
public static MyClass FromCsvString(string source)
{
var parts = source.Split(';');
var id = int.Parse(parts[0]);
var name = parts[1];
return new MyClass()
{
ID = id,
Name = name,
};
}
}
しかし、少し複雑なクラスがあればどうなりますか?例えば、他のオブジェクトのList<>
で。
public class MyClassWithList: MyClass
{
public MyClassWithList()
{
ItemsList = new List<string>();
}
public List<string> ItemsList { get; set; }
public string ToCsvString()
{
// How to format it for future according to CSV format?
return string.Format("{0};{1}", base.ToCsvString(), ItemsList.ToString());
}
public static MyClassWithList FromCsvString(string source)
{
var parts = source.Split(';');
var id = int.Parse(parts[0]);
var name = parts[1];
// How to get it back from CSV formatted string?
var itemsList = parts[2];
return new MyClassWithList()
{
ID = id,
Name = name,
ItemsList = new List<string>()
};
}
}
どのように私はそれがCSV
にデシリアライズ/シリアライズする必要がありますか? 最終的な質問は、クラスA
にクラスB
インスタンスが含まれている場合に、同じことを行う方法ですか?
CSV処理を間違えるようにする方法はたくさんあります。しかし、これを行う多くの無料のライブラリがあり、うまくいきます。私はここに車輪を再発明することに利点が表示されません。 – hatchet
そのCSVの外観に応じて異なります。エクスポートするフォーマットを定義し、エクスポートするコードを記述することができます。 – David
@David私が書いたように、それはCSVへのインポート/エクスポートを希望しません。それは私が他の人のためにしなければならないことです。私はC#のコールズcsvhelperでナゲットを見てきました。 私はcsvについてのwikipediaの記事も読んでいます。しかし、私はcsvへの "List <>"に関するこの種の問題がどのようにして起こるかを理解するためにここに来ました。 – KamikyIT