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 nullable
DateTime code> dans un opérateur tertiaire. Il ne peut pas comprendre quel type le
null code> est censé être, de sorte que vous devez lui donner un indice.