В подобных случаях я предполагаю, что идентификатор пользователя существует, и я бы хотел, чтобы пользователь получил исключение в случае, если идентификатор пользователя недействителен. Кроме того, userID должен быть уникальным, поэтому в случае, если существует более одного userId - я бы тоже хотел получить исключение, чтобы предотвратить неправильные операции. Так что я бы сделал:
public IEnumerable<Review.Project> GetProjectsByUser(int userID)
{
var user = _context.Users.Where(u => u.UserID == userID).Single();
//Now I am sure that user is not null
return user.Projects;
}
Но это зависит от ваших обозначений.
Итак, мои ответы вам:
Should I check for null like I am?
Если есть вероятность, что пользователь с идентификатором пользователя не существует - тогда да.
Should I throw an error instead of returning an empty collection?
Если проектов нет, вы можете вернуть пустую коллекцию или null. Я не вижу причин, чтобы выдать ошибку.
Is there a better way to get a list of projects that the user belongs to?
Есть много способов, которые зависят от вашей модели, но то, что вы сделали, прекрасно.