C #: Datetime Nullable ile Coalesing veya Ternary Operator kullanın
C # 'da Datetime Nullable ile Null Coalescing Operatörünü nasıl kullanabilirim? Linq sorgusunda bir seçimde tek satırlı ifade oluşturmaya çalışıyor. İzleme çalışmıyor
select new ProductRDto
{
EffectiveEndDate = timeslice.EffectiveEndDate.HasValue ?? timeslice.EffectiveEndDate.Value.Year : null
Üçlü Operatör bu hatayı oluşturur
Hata: Operatör '??' 'bool' ve 'int' türündeki işlenenlere uygulanamaz
EffectiveEndDate = timeslice.EffectiveEndDate.HasValue ? timeslice.EffectiveEndDate.Value.Year : null
Hata: 'int' ve 'null' arasında örtük bir dönüşüm olmadığından koşullu ifade türü belirlenemiyor
* if-else ifadelerini kullanmamaya çalışmak
Yanıtlar
Gerçekte ne istediğinizi varsayarsak , yıl timeslice.EffectiveEndDateboş değilse veya boş değer ise, en basit seçenek koşullu işleci veya boş birleştirme işlecini kullanmak değildir - bunun yerine boş koşullu işleci kullanın:
int? year = timeslice.EffectiveEndDate?.Year;
Bunun yerine farklı bir değer kullanmak için boş birleştirme operatörünü kullanırsınız EffectiveEndDate, ör.
DateTime? date = timeslice.EffectiveEndDate ?? defaultEndDate;
Bunun yerine koşullu operatörü kullanmak istiyorsanız, nulldeğerin şu türde olmasını istediğinizi belirtmeniz yeterlidir int?:
int? year = timeslice.EffectiveEndDate.HasValue
? timeslice.EffectiveEndDate.Value.Year
: (int?) null;
Sıfır birleştirme operatörünü üçlü operatörle karıştırıyorsunuz. Sadece bir tane kullanmak istiyorsunuz ?.
EffectiveEndDate = timeslice.EffectiveEndDate.HasValue
? timeslice.EffectiveEndDate.Value.Year : null;