2013-05-10 51 views
1

我知道做這樣的查詢並不是什麼不尋常的事情,但我想我迷路了,所以尋求幫助。我有表與關係1:N,並使其更清晰,我會從管理影樓後期打印屏幕:使用LINQ創建一個與1:N關係的實體的查詢

Table relation

我在asp.net MVC 3項目的工作,我需要以顯示所有Documents將顯示(以及一些過濾器和東西,但我認爲這與這種情況無關)。我需要Documents表中的數據和DocumentFields表中每個文檔的唯一特定記錄。此記錄是包含文檔名稱的記錄,它的唯一性是DocumentID == Docmuents.Id,DocumentFields.RowNo == 1和DocumentsFields.ColumnNo == 2.這是每個Document的唯一記錄,我需要獲取FieldValue從這個實際上擁有文件名稱的記錄中。

我不是很確定如何構建我的查詢(也許使用JOIN),我也想讓我的視圖強類型傳遞Documents類型的模型,但我不確定是否有可能,但我認爲取決於查詢構建的方式將決定視圖模型的類型。

回答

3

我相信你想要的東西是這樣的:

var results = 
    from d in dbContext.Documents 
    join df in dbContext.DocumentFields 
    on new { d.Id, RowNo = 1, ColumnNo = 2 } equals 
     new { Id = df.DocumentId, df.RowNo, df.ColumnNo } 
    select new 
    { 
     Document = d, 
     DocumentName = df.FieldValue 
    }; 

當然,如果你設置了導航屬性,你可以這樣做:

var results = 
    from d in dbContext.Documents 
    let df = d.DocumentFields.First(x => x.RowNo == 1 && x.ColumnNo == 2) 
    select new 
    { 
     Document = d, 
     DocumentName = df.FieldValue 
    }; 
+0

感謝。我需要的。 – Leron 2013-05-10 06:39:41