2013-07-10 63 views
2

我有拉作業信息的查詢:mvc4 lambda:將單獨的查詢添加到對象模型?

var jobs = db.jobs.Include(d => d.docs) 
         .Where(o => o.officeid == 2); 
    return View(jobs.ToList()); 

這個偉大的工程,但我也有以下查詢以某種方式添加到它,這樣我可以打印的「字數統計」值的額外列到.cshtml頁面上。

SELECT SUM(docs.words) FROM docs 
    LEFT OUTER JOIN reviewer ON docs.reviewerid = reviewer.reviewerid 
    WHERE docs.docid = 1111 AND reveiwer.type = 'student' 
簡而言之

因此,所有在第一拉姆達查詢了頂部的就業數據需要在表格打印出來......而且,最後的查詢需要被轉換成拉姆達形式,並結合原始的lambda查詢,以便每個文檔的字數都被添加到作業對象模型中。

這是我有,但它是不工作:

var jobs = db.jobs.Include(d => d.docs) 
         .Include(r => r.docs) 
         .Sum(s => s.docs.words) 
         .Where(o => o.officeid == 2); 
    return View(jobs.ToList()); 

什麼是做到這一點,請正確的方法是什麼?非常感謝!

+0

這變得太令人沮喪了,所以我只是用linq的join關鍵字手動加入所有的表。對於「字數」部分,我重新使用了表中已有的一列,並暫時覆蓋了它的值,這樣我就可以顯示它們而無需向對象添加額外的列。不是一個好的解決方案,但它的工作。感謝所有的閱讀。 – ForeverLearningAndCoding

回答

0

也許嘗試這樣的事:

public class Job 
{ 
    public List<Doc> Docs; 
} 

public class Doc 
{ 
    public int Words; 
} 

List<Job> Jobs = new List<Job> { 
    new Job { Docs = new List<Doc> { new Doc { Words = 5 }, new Doc { Words = 10} } }, 
    new Job { Docs = new List<Doc> { new Doc { Words = 5 } } } 
}; 

var res = Jobs.Select(x => new { Jobs = x, Cnt = x.Docs.Sum(y => y.Words) }); 

並創建包含喬布斯與他們的單詞計數發送到您的視圖,而不是對象的名單一個ViewModel。