2011-08-31 49 views
1

很简单的问题,但我似乎有一个粗糙的早晨。使用Linq从一个有序的结果中选择一个对象

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

“的降序排列所有的用户出价,给我谁在拍卖数量美孚出价的最后一个用户。”

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

谢谢你的时间。

+1

您试过FirstOrDefault吗? –

+0

@Nivid:在这种情况下,FirstOrDefault将返回一个UserAuctionLance对象,而不是我所瞄准的链接用户对象。谢谢你尝试! :) –

+1

你的模型是如何定义的?你可以做一个.FirstOrDefault(u => u.User)I.e. UserActionLance是否也定义了用户对象... –

回答

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

但是,返回一个UserAuctionLance对象,而不是我想要的基础用户对象。 –

+1

用户对象是UserAuctionLance对象的一部分吗?然后修改上面的语句为:source.Where(...)。OrderBy(...)。Select(a => a.UserObject).FirstOrDefault(); – Kevek

+0

现在你明白我的问题。 :)我们去,编辑你的答案,我会接受它。 –

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

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

+0

@scartag多数民众赞成什么因为什么是UserAuctionLances和用户表之间的关系。 –

+0

但是,返回一个UserAuctionLance对象,而不是我想要的基础用户对象。 –

+0

如果您使用的是EF4,并且用户表通过关系链接到UserAuctionLance表,那么User实体应该是导航属性...很难说。 – scartag

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

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

相关问题