使用Linq从有序结果中选择对象

本文关键字:选择 对象 结果 Linq 使用 | 更新日期: 2023-09-27 18:07:04

这个问题很简单,但我今天早上似乎过得很艰难。

到目前为止,我已经构建了以下查询,我想在返回的结果中选择第一个对象,但不是ID本身,而是具有该ID的底层用户。

这有道理吗?

//Edited the code for clarity!
                                                            After this OrderBy is run,
                                                            I have collection I want,
                                                        but I need to select the USER 
                                                             no the UserAuctionLance.
var user = db.UserAuctionLances.Where(a => a.AuctionId == id).OrderByDescending(s => s.DateTimeOfLance).Select??

"按降序排列所有用户的出价,并给我最后一个在拍卖编号Foo上出价的用户。">

也许这会让问题变得更清楚。我需要返回一个User对象。

谢谢你抽出时间。

使用Linq从有序结果中选择对象

我相信你想要:

var user = db.UserAuctionLances.Select(a=>a).Where(a => a.AuctionId == id).OrderByDescending(s => s.DateTimeOfLance).FirstOrDefault();

它应该返回第一个结果,如果不存在,则返回null。

正如你在下面解释的那样,你希望用户对象在userAuctionLances中,所以更像:

var user = db.UserAuctionLances.Where(a => a.AuctionId == id).OrderByDescending(s => s.DateTimeOfLance).Select(a=>a.UserObject).FirstOrDefault();
var user = db.UserAuctionLances.Where(a => a.AuctionId == id).OrderByDescending(s => s.DateTimeOfLance).Select(a => a.User).FirstOrDefault();

这将对匹配项进行排序,然后返回第一个匹配项,如果未找到,则返回null(如果它是引用类型(类((。

你可能想试试。。

var user = db.UserAuctionLances.Where(a => a.AuctionId == id).OrderByDescending(s => s.DateTimeOfLance).Select(s => s.User).FirstOrDefault();

var user = db.UserAuctionLances.Where(a => a.AuctionId == id).OrderByDescending(s => s.DateTimeOfLance).Select(s => s.User).LastOrDefault();

很难说,因为我几乎不知道你的数据结构是什么样的。