簡體   English   中英

我如何選擇組中的最后一行

[英]how can i select last row in a group

我在獲取每個組的最后一行時遇到問題。 我正在使用Linq查詢來檢索組。 這是我的LINQ查詢。

return View(db.tblMsgs.OrderByDescending(a => a.Id)
    .GroupBy(a => new { a.Sender, a.Receiver }).Select(x => x.FirstOrDefault())
    .Where(a => a.Receiver == username).ToList());

使用FirstOfDefault()我正在獲得組中的第一行。 使用LastOrDefault()我正在獲得運行時異常。

這也是我在一段時間內遇到的問題。

經過一番研究,我發現唯一可行的方法是將要獲得的最后一個項目和獲得第一個項目的列表反向。

這背后的原因是SQL語言沒有SELECT BOTTOM語句,而是SELECT TOP語句。 因此,我們的LastOrDefault查詢無法轉換為SQL。 這樣做的可能方法是使用OrderByDescending方法。

return View(db.tblMsgs.OrderByDescending(a => a.Id)
    .GroupBy(a => new { a.Sender, a.Receiver }).Select(x => x.OrderByDescending(y => y.SomeAttribute).FirstOrDefault())
    .Where(a => a.Receiver == username).ToList());

編輯:

您唯一需要選擇的就是要排序的列。 如果它是一個自動遞增的數字值,則它可以是id字段,也可以是該行的添加日期(最好由服務器生成,否則可能會導致問題)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM