获取只选择了一个表中的最新记录的记录列表
本文关键字:最新 新记录 列表 记录 一个 选择 获取 | 更新日期: 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());