【发布时间】:2014-07-02 14:47:02
【问题描述】:
我有一个 IEnumerable<object> 数据源,其中包含一个集合匿名类型。匿名类型的实际结构在设计时是未知的,所以我试图找到一个可以处理任何匿名类型的通用解决方案。
如何将它们加载到 epplus 中以创建电子表格?我有一个名为 ws 的工作表,我尝试过:
ws.Cells["A1"].LoadFromCollection(dataSource, true);
但是,当它运行时,它将所有匿名类型的属性输出到一个单元格中:
{ Id = 10000, Title = This is a test }
我尝试使用以下方法传入 MemberInfo:
var members = dataSource.First().GetType().GetMembers();
ws.Cells["A1"].LoadFromCollection(this._dataSource, true,
TableStyles.Medium1, BindingFlags.Public, members);
但这会引发异常:
参数Properties中提供的属性必须与T的类型相同
关于如何在 c# 中使用匿名类型创建电子表格有什么建议吗?
【问题讨论】:
-
显示你初始化
dataSource的代码 -
真的,您根本不应该在这里使用匿名类型。当它们的结构在编译时已知时,它们被设计为静态使用。你最好构造一些匿名类型以外的东西,这些东西是为在不知道静态模式的情况下使用而设计的。
-
@TimSchmelter 用于初始化的代码会有所不同,但一个简单的示例如下:
ReportData = new ProductRepository(this.DbContext).AllItems.Where(p => p.IsStocked).Select(p => new {p.Id, p.Title }).ToList();抱歉,格式有点乱。