2012-12-07 28 views
1

我有一個LINQ查詢。我對LINQ不太瞭解。我正在研究實體框架。我必須根據輸入日期(CDate)獲取記錄。假設結構是這樣的。如何以更好的方式編碼此LINQ查詢

  Table A        Table B 

     Id   CDate     Id   No   A_Id 

     1   11-11-2012    1   1001   1 
     2   11-11-2012    2   1002   1 
     3   12-12-2012    3   1003   2 

基於此表定義,如果輸入的日期是有些像2012年11月11日,輸出應該是這樣的,

Table B 

    Id  No 

    1  1001 
    2  1002 
    3  1003 

像上面。我試過這個,但它不工作。請看看這段代碼。

代碼

 var model = (from x in Db.TableB 
        where x.TableA.CDate == 'Input Value' // 11-11-2012 
         select new ViewModel 
         { 
         }).Tolist(); 

請告訴我,我可以編寫代碼來獲得適當的輸入日期重複值的可能性。

謝謝,

+1

你有什麼問題? – Erix

回答

3

你想要這樣的事嗎?

var model = (from x in Db.TableB 
    join y in Db.TableB on x.ID equals y.ID 
    where x.TableA.CDate == 'Input Value' //11.11.2012 
    select new 
    { 
     x.ID, 
     y.No 
    }).ToList(); 

輸出:

Id  No 

1  1001 
2  1002 

UPDATE

var model = (from x in Db.TableB 
      where x.TableA.CDate == 'Input Value' //11.11.2012 
      select new 
      { 
       x.ID, 
       x.No 
      }).ToList(); 

對不起,首先,我認爲有一對一的關係。但是你的實體有一對多的關係。你的代碼是正確的,只能加上

select new 
{ 
    x.ID, 
    x.No 
}).ToList(); 
+0

連接可能是不必要的; OP已經擁有'x.TableA.CDate',所以它看起來像實體帶有對其父項的引用。 – Rawling

+0

是的。我剛看到它,有一對多的關係。我認爲是一對一的。我會更新我的答案。 –

+0

它的工作很好。謝謝 – Dheyv