長時間讀者和第一次問題提問者。沒有進一步的道歉我的困境如下:LINQ從孩子的孩子得到平均值
我試圖顯示使用viewmodel在視圖中存儲在數據庫中的一些平均值。一切都很順利,直到我試圖檢索一個值在孩子的子表中(我確信有關於這個關係的更好的詞,而不是那個)。
這個模型看起來是這樣的:Library model
據我瞭解,有一個簡單的數據庫,這樣有問題的平均分數可以很容易地存儲在「尚書」表,但是我只是一個簡單的複製問題測試環境。
視圖模型很簡單:
public string Firstname { get; set; }
public int NumberOfBooks { get; set; }
public double AvgScore { get; set; }
public double BookPeopleAvg { get; set; }
public double AvidReadersAvg { get; set; }
public double LibraryinternalAvg { get; set; }
這裏是控制器動作:
public async Task<ActionResult> Index()
{
var authors = db.Authors
.Include(g => g.Books)
.Include(g => g.Books.Select(c => c.Reviews))
.Select(g => new AuthorViewModel
{
Firstname = g.Firstname,
NumberOfBooks = g.Books.Count(),
AvgScore = g.Books.Average(c => (double?)c.Score) ?? 0,
BookPeopleAvg = g.Books.Select(c => c.Reviews.Average(x => (double?)x.BookPeople) ?? 0)
});
return View(await authors.ToListAsync());
}
我能夠很好地得到AvgScore,但得到的BookPeopleAvg平均(和其他兩個)對我來說很困難。我使用GroupBy發現了一些答案,但我一直無法將它們編織到我的查詢中。
我得到BookPeopleAvg編譯器錯誤是:
CS0029無法隱式轉換類型「System.Collections.Generic.IEnumerable」到
我已經嘗試了一些不同的類型轉換,雖然我不「雙」不認爲問題在於轉換,儘管錯誤信息暗示如此。
最後,這是在MVC 5中完成的,如果這是相關的。
我希望有人能以任何方式幫助我,在此先感謝!
孩子的孩子通常被稱爲一個「孫子」或一個「後裔」 – Jamiec
@Jamiec孫子將是正確的名詞,後代不定義水平,儘管後代包括孫子。 – Andrew
@Andrew我認爲這是我的觀點。具體的術語是孫子,這是一般術語的後裔。我可能有點不清楚。 – Jamiec