2015-11-06 76 views
0

我试图重新在LINQ下面的SQL查询返回JSON:全外连接和计数

SELECT a.Title, COUNT(b.ActionID) FROM labels a 
FULL JOIN [Values] b ON a.ID = b.ID 
GROUP BY a.Title 

我想:

public ActionResult Json() 
{ 

    IEnumerable <object> query = (from a in db.Labels 
            join b in db.Values on a.ID equals b.ID 
            group b.ID by a.Title into grp 
            select new 
            { 
             Label = grp.Key, 
             Value = grp.Count() 

           }).ToList(); 

    return Json(query, JsonRequestBehavior.AllowGet); 
} 

结果只会返回一个值标签:

[{"Label":"New","Value":2}] 

但我需要的是:

[ 
{"Label":"A","Value":2}, 
{"Label":"B","Value":0}, 
{"Label":"C","Value":0}, 
] 

回答

2

你为什么不只是这样做:

IEnumerable <object> query = (from a in db.Labels 
           select new 
           { 
            Label = a.Title, 
            Value = db.Values 
               .Where(w=>w.ID==a.ID) 
               .Count() 
           }).ToList();