2014-12-13 85 views
0
public class Personel 
{ 
    public int Id {set;get;} 
    public ICollection<Agreement> Agreements { set; get;} 
} 

public class Agreement 
{ 
    public int Id {set;get;} 
} 

我有一个如上所述的域模型并具有dbcontext。如何获取Collection导航属性的最后一个元素

我如何获得最后的协议?

var result = _db.Personels.Include(a=>a.Agreements).OrderByDescending(x => x.Id); 

我想所有的personels和他们的最后协议...

这给了我企业人事的所有协议,我只希望最后一个按id降序排序。现在

+0

为什么不能只使用'Linq'中的'.Last()'? – 2014-12-13 11:51:26

+0

我想要得到所有的个人和他们的最后一致。 – DarthVader 2014-12-13 11:51:57

+0

你可以选择匿名类型,其中每个代表'personel'和另一个代表'lastAgreement'。 – Andrew 2014-12-13 12:01:55

回答

0
var result = 
from p in _db.Personels 
select new { 
     personel = p, 
     lastAgreement = p.Agreements.OrderByDescending(x => x.Id).FirstOrDefault() 
     } 
.ToList(); 

您可以将此转换的Personels列表并设置lastAgreement为每个的。

+0

我想得到所有的人员和最后的协议 – DarthVader 2014-12-13 11:52:44

+0

这给了我最后一个人,并非所有的人与他们最后的协议 – DarthVader 2014-12-13 11:53:03

+0

好吧,可以用linq完成,时刻 – Andrew 2014-12-13 11:54:35