Вам немного неясно, что идет не так, но похоже, что это приведет к типу 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, используйте его вместо этого. Я не думаю, что это должно, но я не проверял это. Вы указали, что решение Рупа сделало это, и он использует SelectMany
почти так же, как и я, поэтому эта последняя версия оберегает его.