对于发生了什么问题你有点不清楚,但看起来它会产生一个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