获取只选择了一个表中的最新记录的记录列表

本文关键字:最新 新记录 列表 记录 一个 选择 获取 | 更新日期: 2023-09-27 18:05:21

我有几个由关联连接的表,Skew表的记录因添加数据的日期而不同("Updated"列(。我试图查询这些表,以提取仅针对Skew表中最新记录的列表,而不是所有记录。

例如,下面的行正确地从Skew表中提取了最新的记录和值A。

double A = DATActx.Skews.OrderByDescending(B => B.Updated).
Where(B => B.DealContract == "AP-20-Oct-16").
Select(B => B.BookA).First();

下面的查询提取所有记录,而不仅仅是最新的记录。

var ListData = DATActx.Books.
                              OrderByDescending(B => B.Option.Skews.Updated).
                              Where(B => B.DealContract != null).
                              Select(B => new clsMonteCarlo.Leg()
                              {
                                  BookID = B.ID,
                                  DealNo = B.DealNo,
                                  DealContract = B.DealContract,
                                  BookA = B.Option.Skews.BookA        // one item in Book links to many in Skews - need to only select the latest record
                              }).ToList();

如何修改第二个查询以只返回Skew表中的最新记录?下面的查询(以及我尝试过的其他变体(没有编译。

var ListData = DATActx.Books.
                              OrderByDescending(B => B.Option.Skews.Updated).
                              Where(B => B.DealContract != null).
                              Select(B => new clsMonteCarlo.Leg()
                              {
                                  BookID = B.ID,
                                  DealNo = B.DealNo,
                                  DealContract = B.DealContract,
                                  BookA = B.Option.Skews.BookA        // one item in Book links to many in Skews - need to only select the first record
                              }).First().ToList();

谢谢你的帮助。

获取只选择了一个表中的最新记录的记录列表

First().ToList();

这部分讲不通。First((将返回Book类的一个实例,该实例可能没有定义ToList((。只需移除ToList((,您就会得到您想要的记录。

更新

根据你的回答,你想要一个有序的groupby。

var ListData = DATActx.Books.
                              Where(B => B.DealContract != null).
                              Select(B => new clsMonteCarlo.Leg()
                              {
                                  BookID = B.ID,
                                  DealNo = B.DealNo,
                                  DealContract = B.DealContract,
                                  BookA = B.Option.Skews.BookA,
                                  Updated = B.Updated
                              }).GroupBy(g=>g.DealContract).Select(gr=>gr.OrderByDescending(b=>b.Updated).First());