[英]Confused by Linq and grouping
我正在使用Entity Framework和Linq,并尝试向我学习一些新东西。 现在,我有一个问题,可以轻松地使用SQL解决,但想使用Linq解决。
我有一个颜色班,还有一个汽车班。 每个Car对象都有一种颜色。
public class Color
{
public int ColorID { get; set; }
public string Name { get; set; }
}
public class Car
{
public Guid CarID { get; set; }
public string ModelName { get; set; }
public int ColorID { get; set; }
public virtual Color CarColor { get; set; }
}
现在,我想创建一个查询以获取所有颜色(ID和名称)以及使用该颜色的汽车数量(如果有)。
这种尝试几乎给了我正确的结果,但它排除了未使用的颜色。
var n3 = from car in db.Cars
join c in db.Colors on car.ColorID equals c.ColorID into j1
from j2 in j1.DefaultIfEmpty()
group j2 by j2.ColorID into colorgroup
select new ColorCarCount
{
CarCount = colorgroup.Count(t => t.ColorID != null),
ColorID = colorgroup.Key, //colorgroup.Key,
Name = colorgroup.FirstOrDefault().Name
};
这种尝试感觉最好,但是在这里我无法获得颜色名称:
var n4 = from c in db.Colors
join car in db.Cars on c.ColorID equals car.ColorID into j1
from j2 in j1.DefaultIfEmpty()
group j2 by j2.ColorID into colorgroup
select new ColorCarCount
{
CarCount = colorgroup.Count(t => t.ColorID != null),
ColorID = colorgroup.Key,
Name = "Can't get color name here"
};
有什么建议么? 是的,我已经阅读过类似的问题,但我并没有真正理解它-但我敢肯定,这很简单:-)
var n4 = from c in db.Colors
join car in db.Cars on c.ColorID equals car.ColorID into tmp
from car in tmp.DefaultIfEmpty()
group car by c into colorgroup
select new ColorCarCount
{
CarCount = colorgroup.Count(),
ColorID = colorgroup.Key.ColorID,
Name = colorgroup.Key.Name
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.