我已经成功地设法通过使用Category和WeekNumber对列表进行分组没有问题。我面临的问题是如何添加0并填写缺少的WeekNumber值。如果我只有“汽车”,那将是一件好事,而且很容易,但是我似乎无法正确使用Distinct()遍历每个类别。
当前列表:
预期结果:
如果列表中只有汽车,那么我知道我可以做以下事情来获得整年的价值。
for (var i = 1; i <= 52; ++i)
{
if (vehicleSales.Count(x => x.x == i) == 0)
{
vehicleSales.Add(new WeeklySalesBreakdown { WeekNumber = i, Value = 0, Category = "Cars" });
}
}
感谢帮助和建议!
我稍微修改了您的代码,现在您可以为原始列表中存在的所有类别添加零值记录,为期1年(52周):
var categories = vehicleSales.Select(v => v.Category).Distinct().ToList();
foreach(var category in categories)
{
for (var i = 1; i <= 52; ++i)
{
if (!vehicleSales.Any(x => x.Category == category && x.WeekNumber == i))
{
vehicleSales.Add(new WeeklySalesBreakdown { WeekNumber = i, Value = 0, Category = category });
}
}
}