我有以下LINQ示例:
var colorDistribution =
from product in ctx.Products
group product by product.Color
into productColors
select
new
{
Color = productColors.Key,
Count = productColors.Count()
};
这一切都有效并且非常有意义。
我想要实现的是将其分组为强类型而不是匿名类型。
例如我有一个ProductColour类,我想组成一个List<ProductColour>
这可能吗?
谢谢
答案 0 :(得分:3)
var colorDistributionSql =
from product in ctx.Products
group product by product.Color
into productColors
select
new
{
Color = productColors.Key,
Count = productColors.Count()
};
var colorDistributionList = colorDistributionSql
.AsEnumerable()
.Select(x => new ProductColour(x.Color, x.Count))
.ToList();
答案 1 :(得分:3)
LinqToSql允许将组直接投影到一个类型中(毕竟,该组只是一个IGrouping<T, U>
,一个类型)。 LinqToSql不能做的是将构造函数转换为SQL。
IQueryable<ProductColour> colorDistributionSql =
from product in ctx.Products
group product by product.Color
into productColors
select new ProductColour()
{
Color = productColors.Key,
Count = productColors.Count()
};