我有一个用C#编写并用FileHelpers属性
编写的类[DelimitedRecord(","), IgnoreFirst(1)]
class UserAndValues
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<UserFavourites> Favourites {get;set;}
public UserAndValues()
{ }
}
class UserFavourites
{
public int Id {get;set;}
public string Title {get;set;}
}
然后我调用CSV编写器
var engine = new FileHelperEngine<UserAndValues>();
engine.WriteFile(myPath, myListOfUsers);
我收到以下错误:
字段:'k__BackingField'的类型为:ICollection`1 这不是系统类型,因此该字段需要CustomConverter( 请查看文档以获取更多信息。)
我想写出一个基本上看起来像
的文件UserId, FirstName, LastName, Favourite1Id, Favourite1Title, Favourite2Id, Favourite2Title...
1, Joe, Smith, 1, Random Title, 2, More Title, ...
收藏夹集合可能是10-50条记录深度,并根据文件进行更改。
我不需要读这个文件,只需写下来。
如何使用上述类生成CSV? (我可以修改类结构)
答案 0 :(得分:2)
嗯,非常未经测试:
class UserAndValues
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[FieldConverter(typeof(MyListConverter))]
public ICollection<UserFavourites> Favourites {get;set;}
}
public class MyListConverter: ConverterBase
{
public override object StringToField(string from)
{
throw new NotImplemented("bad luck");
}
public override string FieldToString(object fieldValue)
{
var list = fieldValue as ICollection<UserFavourites>;
return string.Join(",",
list.Select(f => f.ToString())); // customize
}
}