2017-02-15 65 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

不客氣。 –