Добрый день.
Извините, прежде чем я новичок в linq. могу я спросить, в чем смысл ?? в linq
.Where(w => ((w.BalancedDate ?? w.OriginalDateByAMT) >= filter.start_date && (w.BalancedDate ?? w.OriginalDateByAMT) <= filter.end_date) || w.ReplaceByEHValidation == true)
Спасибо
Правильно, если w.BalancedDate
равен нулю, тогда для сравнения будет использоваться w.OriginalDateByAMT
.
@randy да вот что это значит
Это не оператор linq, но это означает, что если левое свойство имеет значение NULL, используйте правое свойство.
Так это как COALESCE или ISNULL в SQL?
@Randy, Точно, на самом деле это вызов нулевого оператора объединения docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
Да, на этот вопрос уже был дан ответ по ссылке в комментариях. Это тип, допускающий значение NULL или объединяющий значение NULL, он возвращает левое значение, если не NULL, или возвращает правое значение.
Если значение в левой части ?? равно нулю, то принимает значение правой стороны.
Т.е.
var x = y ?? z;
Если y не равно нулю, то x = y, иначе x = z
@Aomine, значит, если w.BalancedDate имеет значение null, оно будет заменено значением w.OriginalDateByAMT?