0

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

就我而言,我的班级设计是这样的:

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

4

1 回答 1

1

不是超级理想,但是如果您有一个对象并且需要制作几行,每行都具有相同的信息,但地址除外,您可以执行以下操作:

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;}
}
于 2015-10-19T17:06:42.387 回答