對於發生了什麼問題你有點不清楚,但看起來它會產生一個IEnumerable<IEnumerable<Courses>>
類型。如果你正在尋找一個扁平IEnumerable<Courses>
,我認爲你是,你需要的東西,如:
public IEnumerable<Courses> GetCourses
{
get
{
var query = from a in _entities.Users.Include("Courses")
where a.Id == this.Id
select a;
return query.FirstOrDefault().Courses;
}
}
編輯:爲了避免一個NullReferenceException,試試這個來代替:
public IEnumerable<Courses> GetCourses
{
get
{
var query = from a in _entities.Users.Include("Courses")
where a.Id == this.Id
select a.Courses; //note the difference
return query.SelectMany(i => i);
}
}
請注意,有多種方法可以做到這一點;例如,你也可以使用:
var query = from a in _entities.Users.Include("Courses")
where a.Id == this.Id
select a;
var user = query.FirstOrDefault();
return user == null
? user.Courses
: null;
如果SelectMany
版本還是引起了一個NullReferenceException,使用這個來代替。我不認爲它應該,但我沒有測試它。你表示Rup的解決方案已經完成了,他使用SelectMany
的方式與我很相似,因此最後一個版本可以安全使用。
我剛添加了代碼 – user441365 2011-01-19 14:20:46
當你運行這個時發生了什麼?你收到錯誤的數據了嗎?拋出異常? – 2011-01-19 14:49:20
錯誤31無法將類型'System.Linq.IQueryable>'隱式轉換爲'System.Collections.Generic.IEnumerable '。存在明確的轉換(您是否缺少演員?) –
user441365
2011-01-19 15:11:23