gpt4 book ai didi

c# - 如何检测 IEnumerable 中的 "missing"元素?

转载 作者:行者123 更新时间:2023-11-30 19:13:24 25 4
gpt4 key购买 nike

我有一个 IEnumerable<T>包含在其中一个属性中具有一致间隔的数据元素列表:

List<Interval> list = new List<Interval>
{
new Interval{ TIME_KEY = 600},
new Interval{ TIME_KEY = 605},
new Interval{ TIME_KEY = 615},
new Interval{ TIME_KEY = 620},
new Interval{ TIME_KEY = 630}
};

我如何查询这个列表(最好使用 Linq),以获得如下所示的列表:

 List<Interval> list = new List<Interval>
{
new Interval{ TIME_KEY = 610},
new Interval{ TIME_KEY = 625}
};

?

编辑:我可能会知道间隔距离应该是多少,但如果有一种方法可以通过检查数据来确定它,那将是一个巨大的收获!

编辑:更改为数值

最佳答案

看看this question对于选择连续值的扩展方法。从那里,您可以执行以下操作:

// I'd probably rename SelectBetween to SelectConsecutive
list.SelectConsecutive((x, y) => new { Original = x, Interval = y - x})
.Where(pair => pair.Interval != 5)
.Select(pair => new Interval(pair.Original + 5));

(有点伪代码,但我希望你明白我要去哪里。)

但是,如果缺少元素,它只会生成 一个 元素...如果您从 0 到 20,它不会生成 5、10、15。

为 Henk 的第二个建议添加一些内容:

var missing = Enumerable.Range(0, expectedElementCount)
.Select(x => new Interval(baseInterval + 5 * x)
.Except(list);

关于c# - 如何检测 IEnumerable<T> 中的 "missing"元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3711707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com