这是使用LINQ Group By的正确方法吗?

时间:2013-10-20 14:44:42

标签: c# sql linq tsql linq-to-sql

我有两张桌子。汽车和经销商。每辆车都有一个与之相关的经销商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);

目标是列出每个州的列表视图列表,其中每个州的总车数为最终结果。

1 个答案:

答案 0 :(得分:3)

让我通过扩展方法写一下来帮助我们:

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