J'ai suivi DTO:
var users = from vkuser in _context.VkUsers
join contextUser in _context.Users on vkuser.Uid equals contextUser.Uid
join userClaim in _context.UserClaims on contextUser.Id equals userClaim.UserId
let userBanOffset = contextUser.LockoutEnd
// let userBan = userBanOffset.HasValue ? userBanOffset.Value.Date : null
select new DTO_UserWithCreds
{
Name = vkuser.Name,
Surname = vkuser.Surname,
Ava1 = vkuser.Ava1,
Uid = vkuser.Uid,
Type = DTO_UserWithCreds.FromString(userClaim.ClaimValue),
BanDateTime = contextUser.LockoutEnd?.DateTime
};
4 Réponses :
Vous pouvez lancer le null code> sur datetime? code>:
Vous avez juste manqué une distribution:
Votre problème est ici: Quel type est Pour résoudre ce problème, vous devez dire em> it que Vous pouvez également faire: p> userban code>? Comment le compilateur est-il censé comprendre? userbanoffset.value.date.date code> est un DateTime code>, mais null code> n'est pas et ne peut pas être un DateTime code> car DateTime code> est un type de valeur et des types de valeur ne peuvent pas être nuls. P> null est un nullable let userBan = userBanOffset.HasValue ? (DateTime?)userBanOffset.Value.Date : null
Merci, je n'ai pas pu penser à "(DateTime?) NULL" chose. En outre, il y a
Changer à p>
Cela a le même problème que le premier problème car l'opérateur conditionnel ne sait pas quel type doit être utilisé pour DateTime code> et null code>. Aussi l'OP a une faute de frappe. Il devrait être contextueluser.lockoutend.date code>.
Vous pouvez essayer:
let userban = userBanoffset.hasvalue? userBanoffset.value.date: (DateTime?) NULL code>. J'ai souvent ce problème avec nullableDateTime code> dans un opérateur tertiaire. Il ne peut pas comprendre quel type lenull code> est censé être, de sorte que vous devez lui donner un indice.