我有一個視圖模型(下)。如何創建視圖模型沒有排序內存集合
public class TopicsViewModel
{
public Topic Topic { get; set; }
public Reply LastReply { get; set; }
}
我想從我的IQueryable<Topic>
收集和IQueryable<Reply>
收集填充值的IQueryable<TopicsViewModel>
。我不想使用附加的實體集合(即Topic.Replies),因爲我只想要該主題的最後一個回覆,並執行Topic.Replies.Last()將整個實體集合加載到內存中,然後抓取最後一個名單。我試圖留在IQueryable中,以便查詢在數據庫中執行。
我也不想通過主題進行foreach並查詢replyRepository.Replies,因爲通過IQueryable<Topic>
循環將啓動延遲加載。我寧願建立一個表達式,並在下層完成所有的腿部工作。
我有以下幾點:
IQueryable<TopicsViewModel> topicsViewModel = from x in topicRepository.Topics
from y in replyRepository.Replies
where y.TopicID == x.TopicID
orderby y.PostedDate ascending
select new TopicsViewModel { Topic = x, LastReply = y };
但是,這是行不通的。任何想法如何填充IQueryable或IEnumerable的TopicsViewModel,以便它查詢數據庫並抓取主題和該主題的最後回覆?我努力避免抓住與該主題相關的所有回覆。我只想抓住最後的回覆。
謝謝你的任何洞察力,你必須提供。
是否有主題和回覆之間的導航屬性? – 2011-01-13 22:23:00
是的,那是我提到的附屬實體集合。但是,我不想訪問該導航屬性並觸發整個集合的延遲加載。如果我需要該集合中的所有項目,那麼這將是有道理的,但因爲我只需要該集合中的最後一項,所以最好留在IQueryable中。 – Chev 2011-01-13 22:24:45
當你說'不工作'時,究竟哪個部分不工作?運行時異常,沒有返回,或返回的一切..? – 2011-01-13 23:17:38