【问题标题】:How to convert an EntityCollection<T> to List<POCOObj>如何将 EntityCollection<T> 转换为 List<POCOObj>
【发布时间】:2010-03-13 07:44:43
【问题描述】:

我有实体框架实体事件,它们具有 RSVP 的 EntityCollection。我想将 RSVP 的 EntityCollection 转换为 POCO 类 RSVP 的通用 List。

所以我想要 EntityCollection -> 列表。

实现这一目标的最佳方法是什么?

到目前为止,我有这个(它缺少 RSVP 部分)

var events = from e in _entities.Event.Include("RSVP")
                     select new BizObjects.Event
                     {
                         EventId = e.EventId,
                         Name = e.Name,
                         Location = e.Location,
                         Organizer = e.Organizer,
                         StartDate = e.StartDate,
                         EndDate = e.EndDate,
                         Description = e.Description,
                         CreatedBy = e.CreatedBy,
                         CreatedOn = e.CreatedOn,
                         ModifiedBy = e.ModifiedBy,
                         ModifiedOn = e.ModifiedOn,
                         RSVPs = ???
                     };

谢谢。

【问题讨论】:

标签: c# asp.net asp.net-mvc entity-framework


【解决方案1】:

我建议您将“选择”代码放入名为“ToPoco(this Event event)”之类的扩展方法中(您将使用它进行单个“事件”转换)。

您还必须为多个“事件”转换实现另一种扩展方法,例如 List&lt;BizObjects.Event&gt; ToPoco(this List&lt;Event&gt; events) 扩展,它只是在循环中调用 BizObjects.Event Poco(this Event event)

之后您的查询将如下所示:

var events = (from e in _entities.Event.Include("RSVP")).ToList().ToPoco();

关于回复:

您通常只需为 RSVP 转换创建另一个扩展方法,例如

List&lt;BizObjects.RSVP&gt; ToPoco(this List&lt;RSVP&gt; RSVPs)

然后你就可以拨打RSVPs = e.RSVPs.ToList().ToPoco()


直接适合您的代码的解决方案也可能是这样的:

RSVPs = e.RSVPs.Select(rsvp => new RSVP  { //do mapping })

【讨论】:

  • 我尝试了您的最后一个解决方案,但必须将 .ToList 添加到 .Select。但是,我收到一个 EntityFramework 错误,指出它无法转换 ToList()。稍后有机会我会发布错误。你为我指明了正确的方向。谢谢!
【解决方案2】:
    var events = from e in _entities.Event.Include("RSVP")
                 select new BizObjects.Event
                 {
                     EventId = e.EventId,
                     Name = e.Name,
                     Location = e.Location,
                     Organizer = e.Organizer,
                     StartDate = e.StartDate,
                     EndDate = e.EndDate,
                     Description = e.Description,
                     CreatedBy = e.CreatedBy,
                     CreatedOn = e.CreatedOn,
                     ModifiedBy = e.ModifiedBy,
                     ModifiedOn = e.ModifiedOn,
                     RSVPs = from r in e.RSVP
                             select new BizObjects.RSVP
                             {
                                 RSVPId = RSVPId,
                                 // etc.
                             }
                 };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多