获取记录列表,其中仅选择了一个 table 中的最新记录
Get list of records where only latest record from one table is selected
我有几个由关联连接的 table,table Skew 的记录因添加数据的日期而异(第 "Updated" 列)。我正在尝试查询 tables 以仅针对 table Skew 中的最新记录提取列表,而不是所有记录。
例如,下面的行正确地从 table 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();
如何将第二个查询修改为仅return table 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() 将 return 您的 Book class 的一个实例,它可能没有定义 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());
我有几个由关联连接的 table,table Skew 的记录因添加数据的日期而异(第 "Updated" 列)。我正在尝试查询 tables 以仅针对 table Skew 中的最新记录提取列表,而不是所有记录。
例如,下面的行正确地从 table 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();
如何将第二个查询修改为仅return table 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() 将 return 您的 Book class 的一个实例,它可能没有定义 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());