현재 포럼을 개발 중입니다. 나는 LINQ와 EF를 처음 사용합니다. 저의 포럼에는 가장 최근 주제가있는 주제의 목록을 먼저 보여주는 디스플레이가 있습니다.LINQ to Entities orderby 및 null 모음에 대한 질문
"가장 최근"은 주제 응답과 관련이 있습니다. 따라서 주제의 게시 날짜별로 목록을 정렬하고 싶지는 않지만 주제의 마지막 회신 게시 날짜로 목록을 정렬하고 싶습니다. 따라서 새로운 답변이 포함 된 주제가 목록의 맨 위로 나타납니다. 모든 주제가 적어도 하나의 답을 가지고 있다는 것을 알았다면 이것은 다소 간단합니다. 나는 단지 이것을 할 것이다 :
var topicsQuery = from x in board.Topics
orderby x.Replies.Last().PostedDate descending
select x;
그러나 많은 경우 주제에 응답이 없다. 어떤 경우에는 주제의 게시 날짜를 대신 사용하고 싶습니다. 항목에 응답이없는 경우 x.PostedDate
을 주문하는 방법이 내 linq 쿼리 내에 있습니까? 나는 이것으로 혼란스러워하고 어떤 도움을 주시면 감사하겠습니다. 위의 쿼리를 사용하면 회신이 있다고 가정하는 x.Replies.Last()
때문에 회신이없는 주제가 나옵니다. LastOrDefault()
은 응답이 있다고 가정하는 PostedDate 속성에 액세스해야하므로 작동하지 않습니다.
사전 통찰력에 감사드립니다.
아마도 모든 답장을 받고, 반복하면서 if 문을 사용하여 응답이 있는지 확인하고 그런 식으로 새 목록을 작성하면됩니다. 그러나 질의 내에서 그것을 수행하고 매번 반복하지 않는 방법이 있다면 그것은 훌륭 할 것입니다. – Chev