C# 将实体的一部分选择到具有子对象的自定义对象中

C# 将实体的一部分选择到具有子对象的自定义对象中,c#,entity-framework-6,C#,Entity Framework 6,我有这样一个实体框架查询- var query = from tbl in db.myTable select new MyModel { id = tbl.id, start = tbl.start, end = tbl.end } public class MyModel { public int id {get; set;

我有这样一个实体框架查询-

var query = from tbl in db.myTable
            select new MyModel
            {
               id = tbl.id,
               start = tbl.start,
               end = tbl.end
            }
public class MyModel
{
   public int id {get; set;}
   public string _start {get; set;}
   public string _end {get; set;}
   public Range range {get; set;} // contains start and end property
}
我的模型如下-

public class MyModel
{
   public int id {get; set;}
   public Range range  {get; set;} // contains start and end property
}
在查询select中是否仍然存在将myTable的属性映射到range.start和range.end的方法

我发现唯一可行的方法就是向模型中添加额外的属性,就像这样-

var query = from tbl in db.myTable
            select new MyModel
            {
               id = tbl.id,
               start = tbl.start,
               end = tbl.end
            }
public class MyModel
{
   public int id {get; set;}
   public string _start {get; set;}
   public string _end {get; set;}
   public Range range {get; set;} // contains start and end property
}
然后在查询完成后运行一些代码,将_start映射到range.start和_end映射到range.end

问题是我预见到需要从实体将开始/结束映射到许多自定义子模型中。我需要始终从公共文件导入函数,并记住在查询运行后运行它。如果可以直接在select-like中映射它们,那么会更干净-

var query = from tbl in db.myTable
            select new MyModel
            {
               id = tbl.id,
               range.start = tbl.start,
               range.end = tbl.end
            }

你是说像这样

var query = from tbl in db.myTable
            select new MyModel
            {
               id = tbl.id,
               range = new Range
               {
                   start = tbl.start,
                   end = tbl.end
               }
            }

是的,非常简单,有点无聊。谢谢你的帮助。想想看,你不能做像range=newrangetbl.end,tbl.start这样的事情,这让我有点不舒服。再次感谢!