2017-02-15 68 views
0

我有一个实体框架查询像这样 -选择实体的一部分与儿童自定义对象对象

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

为MyModel如下 -

public class MyModel 
{ 
    public int id {get; set;} 
    public Range range {get; set;} // contains start and end property 
} 

反正查询选择映射内myTable的属性放入range.start和range.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。

问题在于我预见需要将实体的开始/结束映射到许多自定义子模型。我需要总是从一个公共文件中导入该函数,并记住在查询运行后运行它。这将是更清洁,如果有可能只是直接选择喜欢将它们映射 -

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(tbl.end, tbl.start), 
      } 

回答

1

你的意思是这样吗?

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

是的非常简单的一点“杜'时刻。谢谢您的帮助。认为你不能做像“范围=新范围(tbl.end,tbl.start)”这样的事实,“让我有点失望。再次感谢! – user3333134

+0

不客气。 –