Je suis le codage de ce forum et depuis que je suis nouveau à LINQ j'ai rencontré ce problème lorsque l'utilisateur accède à la page principale. Je veux un tableau affichant une liste des forums comme celui-ci:requête LINQ pour un forum
Forum --- Topics (count) --- Posts (count) --- LastPostUserId --- LastPostTime
je les tables SQL suivantes:
Forums:
ForumId (int32),
Title (string),
Description (string)
ForumThreads:
ThreadId (int32),
ForumId (int32),
UserId (guid),
Subject (string),
Views (int32),
CreateDate (DateTime)
ForumPosts:
PostId (int32),
ThreadId (int32),
UserId (guid),
Post (string),
CreateDate (datetime)
Merci ...
Take (1) ne renvoie pas d'erreur si elle est nulle. Mais il ne semble pas possible de déclarer des variables comme LastPostThreadId = lastPost.ThreadId - Je dois utiliser .Select()? Autre chose ... est-il possible de renvoyer des valeurs comme fortement typées au lieu de IOrderedQueryable et ainsi de suite? –
Morten
Ah oui, c'est parce que Take (1) pourrait aussi bien être Take (100), donc le système ne sait pas que vous retournez un seul ForumPost. C'est pourquoi vous devriez utiliser .FirstOrDefault() au lieu de .Take (1). Cela vous permettra d'utiliser lastPost.CreateDate et le retournera en tant que DateTime au lieu d'un IOrderedQueryable. –
Vous devrez vérifier null de toute façon. Le plus simple est: LastPostTime = (lastPost! = Null? LastPost.CreateDate: null) –