【问题标题】:closedXML insert subcollectionclosedXML 插入子集合
【发布时间】:2015-10-20 11:11:08
【问题描述】:

我正在从数据库中获取我的收藏

var exclCompany = companies.Select(u => new ExcelCompaniesViewModel
{
    Id = u.Id,
    IsEditedFirstTime = u.IsEditedFirstTime ? "Да" : "Нет",
    IsLoggedFirstTime = u.IsLoggedFirstTime ? "Да" : "Нет",
    Title = u.Title,
    Description = u.Description,
    Members = u.RmCompanyMembers.Select(p => new CompanyMemberViewModel
    {
        MemberDateLogin = "12/10/12",
        MemberName = String.Format("{0} {1} {2}", p.LastName, p.FirstName, p.MiddleName),
        TelephoneMemers = p.Phone
    }).ToArray()

}); 

并插入到工作表中。

workSheet.Cell(2, 1).InsertData(exclCompany);

但在结果文件中,具有成员的单元格显示为:

System.Linq.Enumerable+WhereSelectEnumerableIterator

如何插入带有子集合的集合?

【问题讨论】:

  • 您必须在选择末尾使用.ToArray() 吗?可以.ToList() 举例吗?
  • System.Linq.Enumerable+WhereSelectEnumerableIterator 是 exclCompany 的类型。您必须调用 .ToArray() 或 .ToList() 才能实际执行 LINQ 查询并检索数据。
  • 我相信它被称为。在u.RmCompanyMembers.Select(...).ToArray()的末尾

标签: c# asp.net asp.net-mvc closedxml


【解决方案1】:

如果您有权修改代码以使用.ToList(),而不是.ToArray(),那么您可以使用这个:

将成员的类型更改为实现IList 接口的类型,并覆盖ToString() 方法。这样,您将有自己的方式来可视化数组。例如:

public class MembersCollection: IList<CompanyMemberViewModel>
...
    public override string ToString()
    {
        return string.Join(", ", this);
    }
}

当然不要忘记实现 CompanyMemberViewModel 的ToString()

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 2021-03-28
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2013-09-04
    相关资源
    最近更新 更多