这是使用 LINQ 分组依据的正确方法吗?

本文关键字:方法 LINQ | 更新日期: 2023-09-27 18:36:19

我有两个表。汽车和经销商。每辆车都有一个与之关联的经销商 ID。每个经销商都有一个状态属性。 我需要编写一个查询,告诉我数据库中每个州有多少辆汽车。我还没有使用组,但我认为这就是它的用途。 这是我在意识到我需要帮助之前所得到的。

        var query = (from c in _db.Cars
                     join d in _db.Dealers on c.DealerID equals d.DealerID
                     where c.Active == true
                     group c by d.State);

目标是让每个州列出一个列表视图,每个州的汽车总数作为最终结果。

这是使用 LINQ 分组依据的正确方法吗?

让我通过在扩展方法中编写它来提供帮助:

var query = 
_db.Cars
.Join
(
    _db.Dealers,
    c=>c.DealerID,
    d=>d.DealerID,
    (car,dealer)=>new {car,dealer}
)
.Where
(
    x=>x.car.Active//no reason to check with == true if this is boolean
)
.GroupBy
(
    x=>x.dealer.State
)
.Select
(
    x=>new 
    {
        State = x.Key,
        Cars = x.Count()
    }
);