我有一个列表:
List<BtnCountViews> btnCountViewsList;
BtnCountViews 类如下所示:
public class BtnCountViews
{
public int DayOfYear { get; set; }
public int BtnCount { get; set; }
public int Views { get; set; }
}
我有一个非常不寻常的要求,我不确定如何开始实现它。
我想做的是用 `BtnCountViews 填充 btnCountViewsList
,用于缺少 BtnCount 为 0 和 Views 为 0 的对象的 DayOfYear。
为了让我开始,谁能告诉我如何在 btnCountViewsList
中找到最小和最大 DayOfYear。请注意,我用 LINQ 标记了它,但我不确定这是否是最好的工具。
如果有人可以建议一种方法来填充缺失的对象,我们也会很高兴,但这并不是这个问题的真正重点,因为我认为我需要先找出如何获得最小值和最大值。
最佳答案
您可以在不明确找到 min
和 max
的情况下添加缺失的天数:
- 按
DayOfYear
升序排列列表 ( how? ) - 在列表的末尾开始一个循环索引
i
,然后向后工作;当i
达到零时停止 - 比较
DayOfYear
属性在i
和i-1
- 如果两天相差一天,则向下移动到下一个
i
- 否则插入一条新记录,
DayOfYear
设置为btnCountViewsList[i]
减一。
在此过程结束时,您的列表将包含 DayOfYear
的每个值的条目。这是一个示例实现:
items.Sort((x, y) => x.DayOfYear.CompareTo(y.DayOfYear));
Console.WriteLine("Before: {0}", string.Join(", ", items.Select(x => x.DayOfYear)));
int i = items.Count-1;
while (i > 0) {
if (items[i].DayOfYear == items[i-1].DayOfYear+1) {
i--;
} else {
items.Insert(i, new BtnCountViews { DayOfYear = items[i].DayOfYear-1 });
}
}
关于c# - 如何填补列表中属性值的空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775298/