2013-10-20 51 views
1

我有两个表。汽车和经销商。每辆车都有一个与其关联的dealerID。每个经销商都有一个状态属性。我需要编写一个查询,告诉我数据库中每个状态有多少辆汽车。我还没有使用组,但我认为这是它的用途。这是我得到之前,我意识到我需要帮助。这是使用LINQ Group By的正确方法吗?

 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

是您查询好吗?看起来像是有效的。什么是“国家”? –

+1

尝试一个简单的数据集,您可以轻松检查它是否返回正确的结果。 – ChrisF

+0

@KingKing我无法选择状态并从中返回汽车的数量。我所知道的。 – jackncoke

回答

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