Select
- это преобразование, как было указано, поэтому, когда вы говорите:
.Select(q => q.groupId == groupId)
, вы получаете список логических значений, основанный на том, что элемент в GroupSet имеет groupId, равныйдля данного groupId
это вроде как делать:
List<bool> results = new List<bool>;
foreach(group in GroupSet)
{
results.Add(group.goupId==groupId);
}
return results;
То, что вы хотите, это либо
Where
, который будет фильтровать на основелямбда-выражение и возвращает все экземпляры, которые соответствуют фильтру. First
, который будет возвращать первый элемент, который соответствует лямбда-выражению (и выдает исключение, если ни один из них не будет) FirstOrDefault
, которыйвернет первый элемент, который соответствует или значение по умолчанию (вероятно, ноль в этом случае), если ни один не соответствует Single
вернет единственный соответствующий элемент и сгенерирует исключение, если не существует только одного SingleOrDefault
вернет единственный соответствующий элемент или значение по умолчанию (возможно, нулевое), еслини один не соответствует, но выдает исключение, если их больше одного.
Что именно выбрать, зависит от таких факторов, как, будет ли список всегда содержать элемент, который соответствует?Это ошибка, если нет?будет больше 1?Больше 1 ошибки.Очевидно, что если вы знаете, что когда-либо будет только один, то First
будет быстрее, так как он остановится при попадании в первый, но Single
будет повторяться, пока не проверит весь список или не найдет второй элемент.