使用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对象。
谢谢你抽出时间。
我相信你想要:
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();
很难说,因为我几乎不知道你的数据结构是什么样的。