1
A Chat
具有Messages
。鑑於MessageId
,我試圖得到接下來的50條消息。我現在所擁有的應該是理論上的工作,但是因爲我將所有內容都加載到內存中,所以效率很低。這是我到目前爲止:EF - 在排序後的查詢中的特定元素之後提取X個元素
// get message with parent chat/other messages
var message = db.ChatMessages.Include(s => s.Chat.Messages).First(s => s.ChatMessageId == messageId);
var chat = message.Chat;
// this is what I want to avoid, but I don't know how to get the position without throwing all messages into memory
var messages = chat.Messages.OrderByDescending(s => s.DatePosted).ToList();
var index = messages.IndexOf(message);
messages = messages.GetRange(index, index + 50);
return messages.ToList();
如何執行此操作而不會將每條消息都扔到內存中?
我試圖避免這是ToList():'VAR消息= chat.Messages.OrderByDescending(s => s.DatePosted).ToList();' - 或者它是不可避免的? – SB2055
看我的編輯 - 我認爲這有幫助嗎?對不起,是的,我撇開了這個問題,並補充說,當它是你的問題的主旨時作爲事後的想法。道歉 – Basic
啊,基於id是一個聰明的解決方案。我認爲它的作品!我會盡快接受。 – SB2055