我使用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
。
答案 0 :(得分: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;}
}