Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用LINQ和C从继承的类中选择所有列_C#_Entity Framework_Linq_Entity Framework Core - Fatal编程技术网

C# 如何使用LINQ和C从继承的类中选择所有列

C# 如何使用LINQ和C从继承的类中选择所有列,c#,entity-framework,linq,entity-framework-core,C#,Entity Framework,Linq,Entity Framework Core,我有一个使用entity Framework的auto code gen创建的实体,我不想修改该条目,因为我会在每个表上重新生成该代码。为了实现单个EF查询,我创建了一个继承实体,它添加了一个额外的列SessionId,如下所示 public class SpeakerWithSessionIdAdded : Speaker { public int SessionId { get; set; } } 演讲者的定义如下,但总共有大约100列,我知道应该少一些列,但现在是这样 publi

我有一个使用entity Framework的auto code gen创建的实体,我不想修改该条目,因为我会在每个表上重新生成该代码。为了实现单个EF查询,我创建了一个继承实体,它添加了一个额外的列SessionId,如下所示

public class SpeakerWithSessionIdAdded : Speaker
{
    public int SessionId { get; set; }
}
演讲者的定义如下,但总共有大约100列,我知道应该少一些列,但现在是这样

public class Speaker {
  public int Id {get;set;}
  public string firstName {get;set;}
  public string lastName {get;set;}
  ... MANY MORE COLUMNS
}
我有一个LINQ查询,如下所示,其中我希望得到所有列以及我添加的SessionId。有没有简单的方法可以做到这一点,而不用使用反射,或者手工列出我想显示的每一列

var speakersWithSessionIdAdded = await
    (from sessionPresenter in _dbContext.SessionPresenter
    join speaker in _dbContext.Speakerson sessionPresenter.SpeakerId equals attendee.Id
    where sessionIds.Contains(sessionPresenter.SessionId)
    select new SpeakerWithSessionIdAdded
    {
        SessionId = sessionPresenter.SessionId,
        Id = attendee.Id,
        UserFirstName = attendee.UserFirstName,
        UserLastName = attendee.UserLastName,
        Email = attendee.Email,
        Username = attendee.Username,
        UserBio = attendee.UserBio,
        AllowHtml = attendee.AllowHtml
        .. I DON'T WANT TO LIST OUT 100 MORE LINES HERE FOR EVERY PROPERTY
    }).ToListAsync();

return speakersWithSessionIdAdded.ToLookup(r => r.SessionId);

}

手工写行是一次性的工作,你可以用比写这个问题更少的时间来完成;使用AutoMapper和map Speaker将扬声器映射到SessionDadded的扬声器。最好的解决方案,只要LINQ没有*运算符。