Bad", "3", "2", -6ren">
gpt4 book ai didi

c# - 如何使用 LINQ 或响应式(Reactive)扩展拆分带有嵌入转换标记的列表?

转载 作者:行者123 更新时间:2023-12-02 14:19:48 25 4
gpt4 key购买 nike

我有以下来自外部来源的输入:

IEnumerable<string> = new [] { "1", "5", "Transition Good->Bad", "3", "2",    
"Transition Bad->Good", "7", "Transition Good->Bad",
"9", "12" };

我想提取一个仅包含“Good”值的列表,因此在本例中,该值是 1,5,7。我无法对会有多少次转换以及第一次转换是从“好”到“坏”还是反之亦然做出任何假设。

我当前的解决方案是使用 Enumerable.First 查找第一个转换(检查第一个值是好还是坏),然后对输入执行 foreach 循环,维护“isValueGood” “贯穿始终的 bool 值。

是否有更 Eloquent 方法来做到这一点,使用 LINQ 或响应式(Reactive)扩展?

已编辑:扩展问题以询问 Rx 中可能的解决方案。

最佳答案

LINQ 在逐个元素工作时确实表现出色,因此我怀疑任何使用 LINQ 的方法都不会很优雅(因为是否流式传输特定值取决于序列中更远的值)。

我会做你正在做的事情,但略有不同。我不会使用 Enumerable.First,而是将当前状态存储为

的值
enum State { Good, Bad, Unknown };

将初始状态设置为未知。缓冲这些值,直到您知道状态。如果状态指示第一组值处于 Good 状态,则输出这些缓冲值,然后按照您的描述进行操作。这可以防止可能的 O(n) 遍历来找到初始状态,并且它可以防止遍历序列两次。

关于c# - 如何使用 LINQ 或响应式(Reactive)扩展拆分带有嵌入转换标记的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122864/

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