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

时间:2011-08-31 15:41:54

标签: c# linq entity-framework-4

非常简单的问题,但我似乎有一个艰难的早晨。

到目前为止,我已经构建了以下查询,并且我想在返回的结果中选择第一个对象,但不是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对象。

感谢您的时间。

3 个答案:

答案 0 :(得分:2)

我相信你想要:

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();

答案 1 :(得分:1)

你可能想尝试..

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();

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

答案 2 :(得分:1)

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

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