我一直在想;在我工作的公司中,我们管理着大量数据,但由于这些数据是由客户有效地提供给我们的,我们不一定信任它——这是有充分理由的。其中很多都有错误的时间戳,或者其中一些丢失了,或者你有其他任何东西。
我最近不得不做的一个任务基本上是在一组元素中找到为空的元素,然后找到下一个非空元素,然后平均这些空记录之间的差异。也就是说,假设我们有数据集 A:
A = { 0f, 1f, 2f, 5f, Null, Null, Null, 7f, Null, 8f }
需要注意的是,我们必须区分 0 和 Null。区别显然是0就是0,而Null根本就没有数据。
使用 LINQ,有没有一种方法可以让我们基本上访问 A 的以下小节:
Subsection { Null, Null, Null, 7f }
并将它放在一个集合中,这样我们就可以在四个记录上将它转换为 (7/4f)..
Subsection { 1.75f, 1.75f, 1.75f, 1.75f }
这样当A
再次迭代时,我们得到以下输出:
{ 0f, 1f, 2f, 5f, 1.75f, 1.75f, 1.75f, 1.75f, 4f, 4f }
目前我这样做的方法是使用数字 for 进行传递,查找 null 元素,然后将所有连续的 null 存储在 a 中List<T>
,并在找到下一个非 null 后,通过遍历 said 来分配所有变量List<T>
。它可以完成工作,但看起来很讨厌。
那么,为了自恋,有没有办法巧妙地做到这一点(=减少代码混乱)?
伪
a = { 0, 1, 2, 5, null, null, null, 7, null, 0 }
nullList = new List()
for i = 0, a.length
if i == null
nullList.add(i)
else
if nullList.length > 0
nullList.add(i)
int avg = nullList.Aggregate(x => x)
foreach element in nullList
element = avg
nullList.clear()