9

のクラスがありUser、複数の連絡先番号を持つことができます。CsvHelper を使用してユーザーに関するレポートを生成しています。これにより、ユーザーの名前と連絡先の詳細の CSV ファイルが作成されます。各連絡先番号は、連絡先番号のタイプを列ヘッダーとして、独自の列に表示する必要があります。

以下にContactNumberUserクラスと、UserMapそれに応じて CSV ファイルをフォーマットする必要があるクラスがあります。

public class ContactNumber
{
    public string ContactType { get; set; }
    public string Number { get; set; }
}

public class User
{
    public string Name { get; set; }
    public IEnumerable<ContactNumber> ContactNumbers{ get; set;}
}

public sealed class UserMap : CsvClassMap<User>
{
    public UserMap()
    {
        Map(m => m.Name).Name("Username");
        // Incorrect Code
        Map(m => m.ContactNumbers).Name(c => c.ContactType);
    }
}

ContactNumbers の IEnumerable プロパティをマッピングして、目的の結果を得るにはどうすればよいですか?

4

3 に答える 3

4

これはCsvHelperの複製ではありません。この質問では、モデルから CSV に変換する方法を尋ねているため、複数の列を 1 つのリストに読み込んでください。その逆ではありません。中間モデルを作成することでこれを解決しました。したがって、最初に元のモデル (ユーザー) を中間モデル (連絡先) に変換してから、そのモデルをマッピングして CSV を作成します。

于 2015-10-16T12:37:39.480 に答える