实体框架n-to-n查询,从导航表中获取最后的记录

时间:2015-08-05 01:35:48

标签: asp.net-mvc linq entity-framework

我在我的项目中使用entityframework。

我有3个表,这些表被导航了很多对很多关系。 这是我的图表。

enter image description here

我想选择所有最后批准状态= = 15的我的计数器ID。

我写了这样的查询;

var sayacOnayDurumlari =
                db.CounterApproveStatus
                    .Where(x => x.ApproveStatusId == 15).OrderByDescending(x=>x.Id)
                    .GroupBy(x => x.CountersId)
                    .Select(e => e.FirstOrDefault());

但它需要我的旧记录ID == 15

2 个答案:

答案 0 :(得分:0)

 var son =
            db.Counters.Where(
                x => x.CounterApproveStatus.OrderByDescending(t => t.Id).FirstOrDefault().ApproveStatusId == 15)
                .ToList();

我试过这样,我想我已经实现了。这是一个很好的查询吗?

答案 1 :(得分:0)

您首先需要组,然后查找该组中的最新ID是否具有所需的statusId。 以下语法可能不完全正确,但你可以理解。

var sayacOnayDurumlari =
                db.CounterApproveStatus
                .GroupBy(x => x.CountersId)
                .Select(g => new {
                    CountersId = g.Key, 
                    LatestRecord = g.OrderByDescending(x=> x.Id)
                                  .FirstOrDefault()
                   })
                .Where(g=> g.LatestRecord.ApproveStatusId == 15)                  
                .Select(g => g.CountersId).ToList();