Ich bin dieses Forum codieren und da ich neu bei LINQ bin lief ich in dieses Problem, wenn der Benutzer die Hauptseite erreicht. Ich möchte eine Tabelle, die eine Liste von Foren wie diese Anzeige:LINQ-Abfrage für ein Forum
Forum --- Topics (count) --- Posts (count) --- LastPostUserId --- LastPostTime
Ich habe folgende SQL-Tabellen:
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)
Danke ...
Take (1) wirft keinen Fehler, wenn es null ist. Aber es scheint nicht möglich, Variablen als LastPostThreadId = lastPost.ThreadId zu deklarieren - ich muss .Select() verwenden? Eine andere Sache .. ist es möglich, Werte als stark typisiert statt IOrderedQueryable und so weiter? –
Morten
Ah ja, das liegt daran, dass Take (1) auch Take (100) sein könnte, damit das System nicht weiß, dass Sie eine einzelne ForumPost zurückgeben. Deshalb sollten Sie .FirstOrDefault() anstelle von .Take (1) verwenden. Dadurch können Sie lastPost.CreateDate verwenden und es als DateTime anstelle von IOrderedQueryable zurückgeben. –
Sie müssen sowieso auf Null überprüfen. Der einfachste Weg ist: LastPostTime = (lastPost! = Null? LastPost.CreateDate: null) –