我有了具有組織的EntityCollection用戶實體的EntityFramework模型。我怎樣才能凝結以下Linq查詢到一個IQueryable的
爲特定的用戶,我想寫一個LINQ查詢返回該用戶屬於其中該查詢將達到分貝只有一次組織的名稱。
我的問題是,我不能看到如何寫這個查詢,而無需先兌現用戶然後查詢用戶組織集合。
我想嘗試寫一個命中db的查詢一次。
我到目前爲止有:
var orgNames = context.Users
.Where(u => u.LoweredUserName == userName.ToLower())
//materialises user
.FirstOrDefault()
.Organisations
//second hit to the db
.Select(o => o.Name);
我是僞瞄準了,但有什麼不能見樹不見林:
orgNames = context.Users
.Where(u => u.LoweredUserName == userName.ToLower())
//don't materialise but leave as IQueryable
.Take(1)
//The problem: turn what the query sees as possibly multiple
// (due to the Take method) EntityCollection<Organisation> into a List<String>
.Select(u => u.Organisations.Select(o => o.Name));
我已經看過聚集,但我似乎是想在圈:) :)