#c# #.net #linq
#c# #.net #linq
Вопрос:
Я не уверен, как написать этот linq express, но я пытаюсь взять список объектов / записей и найти первое истинное значение и установить свойство.
var test = recordList.First(s => s.myObject.isTrueValue == true);
isTrueValue имеет следующее значение
public поверх bool IsTrueValue() { возвращает true}
при сборке я получаю следующую ошибку
операция «==» не может быть применена к оператору типа method group и bool
То, что я пытаюсь сделать, это просмотреть каждую запись в списке и найти первое поле isTrueValue, равное true.
Комментарии:
1. является ли s.MyObject.isTrueValue свойством или методом?
2. var test = список записей. Где(s => s.MyObject.isTrueValue == true);
3.
== true
в любом случае не должен быть записан. Он всегда избыточен и не передает никакой полезной информации.4. @KonradRudolph: Просто для ясности, это всегда избыточно, когда LHS имеет тип
bool
. Я довольно часто пишу это, когда LHS имеет типbool?
.5. @JonSkeet Справедливое замечание, но мне тоже не нравится писать это с обнуляемыми значениями, поскольку в общем использовании этот шаблон практически всегда является синтаксическим шумом. Поэтому я предпочитаю явно разворачивать значение null (
Value
илиGetValueOrDefault()
).
Ответ №1:
isTrueValue
это метод, поэтому вы забыли скобки. Кроме того, как заявил Конрад Рудольф, isTrueValue()
всегда возвращает true, поэтому вам не нужно == true
выражение:
var test = recordList.First(s => s.myObject.isTrueValue());
Ответ №2:
Можете сказать мне, какой тип данных isTrueValue. isTrueValue должно иметь тип Boolean для сравнения с true.
Попробуйте это и дайте мне знать, работает ли это для вас.
var test = recordList.Where(s => s.myObject.isTrueValue == true).First();
Комментарии:
1. В сообщении об ошибке четко указано, что тип
isTrueValue
является method group2. Обратите внимание, что ответы не должны использоваться для получения дополнительной информации. Я понимаю, что у вас еще недостаточно репутации, чтобы комментировать, но это не значит, что вместо этого уместно использовать ответы … это просто означает, что вам нужно подождать, пока другие зададут вопросы, в основном.