C#Linq-在缺少空值和周号的情况下将它们添加到列表中

问题描述 投票:0回答:1

我已经成功地设法通过使用Category和WeekNumber对列表进行分组没有问题。我面临的问题是如何添加0并填写缺少的WeekNumber值。如果我只有“汽车”,那将是一件好事,而且很容易,但是我似乎无法正确使用Distinct()遍历每个类别。

当前列表:

Current List

预期结果:

Expected Result

如果列表中只有汽车,那么我知道我可以做以下事情来获得整年的价值。

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

感谢帮助和建议!

c# linq distinct distinct-values
1个回答
0
投票

我稍微修改了您的代码,现在您可以为原始列表中存在的所有类别添加零值记录,为期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 });
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.