LinqToCsv - 将单个对象写入文件

LinqToCsv - Writing single objects to the file

我正在使用 LinqToCsv 库创建逗号分隔文件,运行 遇到问题。我在这里阅读了有关它的文章:http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library

在我的例子中,我的 class 设计是这样的:

class AddressIndo
{
   public string City { get; set;}
   public string Street {get;set;}
}

class PersonInfo
{
   public PersonInfo()
   {
       this.AddressList = new List<AddressInfo> ; 
   }
   public string Name{get;set;}
   public string Phone {get;set;}
   public List AddressList <AddressInfo>  {get; set;}
}

所以 PersonInfo class 本身有一个那个人的地址列表。所以现在我想将 PersonInfo 对象写入文件,看起来这个库的 Write 方法只需要一个 IEnumerable 但是例如如果这个人有三个地址我想要它还要在输出文件中创建三行。(是的,每行都会复制公共信息)。 但我不知道该怎么做?因为Write方法只取了一个IEnumerable

不太理想,但如果您有一个对象并且需要制作多行,每行具有相同的信息(地址除外),您可以这样做:

void Main()
{
    var csvList = new List<PersonInfoCSVModel>();
    var yourPersonObject; //already filled with the data you want

    yourPersonObject.AddressList.ForEach(address =>
    {
        csvList.Add(new PersonInfoCSVModel()
        {
            Name = yourPersonObject.Name,
            Phone = yourPersonObject.Phone,
            City = address.City,
            Street = address.Street
        });
    });

    yourCSVContext.Write(csvList, "yourFile.csv");
}

class PersonInfoCSVModel
{
    [CsvColumn(Name = "Name", FieldIndex = 1)]  
    public string Name{get;set;}

    [CsvColumn(Name = "Phone", FieldIndex = 2)] 
    public string Phone {get;set;}

    [CsvColumn(Name = "City", FieldIndex = 3)]  
    public string City { get; set;}

    [CsvColumn(Name = "Street", FieldIndex = 2)]    
    public string Street {get;set;}
}