如何将EntityCollection <T>转换为List <POCOObj>

Gui*_*mez 5 c# asp.net asp.net-mvc entity-framework

我有实体框架实体事件,其实体集合为RSVP.我想将RSVP的EntityCollection转换为POCO类RSVP的通用List <>.

所以我想要EntityCollection - > List.

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

到目前为止我有这个(它缺少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 = ???
                     };
Run Code Online (Sandbox Code Playgroud)

谢谢.

Pet*_*nar 1

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

您还必须实现另一个扩展方法来进行多个“事件”转换,例如扩展,它只是在循环中List<BizObjects.Event> ToPoco(this List<Event> events)调用。BizObjects.Event Poco(this Event event)

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

var events = (from e in _entities.Event.Include("RSVP")).ToList().ToPoco();
Run Code Online (Sandbox Code Playgroud)

关于回复:

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

List<BizObjects.RSVP> ToPoco(this List<RSVP> RSVPs)

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


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

RSVPs = e.RSVPs.Select(rsvp => new RSVP  { //do mapping })
Run Code Online (Sandbox Code Playgroud)