Ответ 1
Замените DateofDiagnosis.Year
на DateofDiagnosis.Value.Year
И проверьте DateofDiagnosis.HasValue
, чтобы убедиться, что он не первый.
Как я могу рассчитать год в дате nullable
?
partial void AgeAtDiagnosis_Compute(ref int result)
{
// Set result to the desired field value
result = DateofDiagnosis.Year - DateofBirth.Year;
if (DateofBirth > DateofDiagnosis.AddYears(-result))
{
result--;
}
}
Ошибка:
'System.Nullable<System.DateTime>' does not contain a definition for 'Year' and no
extension method 'Year' accepting a first argument of
type 'System.Nullable<System.DateTime>' could be found (are you missing a using
directive or an assembly reference?)
Замените DateofDiagnosis.Year
на DateofDiagnosis.Value.Year
И проверьте DateofDiagnosis.HasValue
, чтобы убедиться, что он не первый.
Сначала проверьте, имеет ли он Value
:
if (date.HasValue == true)
{
//date.Value.Year;
}
Используйте значение nullableDateTime.Value.Year.
Ваш код может выглядеть так,
partial void AgeAtDiagnosis_Compute(ref int result)
{
if(DateofDiagnosis.HasValue && DateofBirth.HasValue)
{
// Set result to the desired field value
result = DateofDiagnosis.Value.Year - DateofBirth.Value.Year;
if (DateofBirth > DateofDiagnosis.Value.AddYears(-result))
{
result--;
}
}
}