我有一个用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? (我可以修改类结构)

最佳答案

好吧,非常未经测试:

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
    }

}

关于c# - 编写CSV文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10213651/

10-11 22:50
查看更多