如何使用linq获取组中的最后一个数据

本文关键字:最后一个 数据 何使用 linq 获取 | 更新日期: 2023-09-27 18:30:10

在我的表中,我有一个属性详细信息。每个属性都有代理名称。我想按代理名称分组,并取每个代理的最后一行。我使用了下面的代码,但它给出了第一行的值。当我使用lastorderfault时,它显示错误。任何人都知道

 var property = (from n in properties select n).GroupBy(x => x.agentname)
              .Where(g => g.Count() == 1)
              .Select(g => g.FirstOrDefault()).OrderByDescending(x => x.datecreated).Take(20);

如何使用linq获取组中的最后一个数据

首先,您的第一个查询对我来说毫无意义,即(from n in properties select n)您可以直接在properties上应用GroupBy。接下来,您将从组中选择第一条记录,并在完整结果上应用OrderByDescending,这将不会有任何作用,因为您只有一条记录。

这应该会给你带来预期的结果:-

var property = properties.GroupBy(x => x.agentname)
                         .Select(x => x.OrderByDescending(z => z.datecreated)
                                       .FirstOrDefault());

这将返回一个包含last inserted row of each agent的集合。