繁体   English   中英

如何转换 IChangeSet<int> 列出<int> ?

[英]How to convert IChangeSet<int> to List<int>?

我需要将IObservable<int>转换为IObservable<bool> 为此,我需要observableSelectedQuantity最后两个值。

    IObservable<int> observableSelectedQuantity;
    public Constructor()
    {
        observableSelectedQuantity = Item.WhenAnyValue(x => x.SelectedQuantity);
        observableSelectedQuantity.ToObservableChangeSet().Select(ConvertToBool).Subscribe();
    }

    private bool ConvertToBool(IChangeSet<int> arg)
    {
        //Inside logic
    }

我认为我可以从某种列表中获取最后两个元素。 所以我将IObservable<int>转换为IChangeSet<int> ,然后在ConvertToBool编写此代码:

var a = arg.ToList();

我预计每次将新元素添加到observableSelectedQuantityToList都会生成包含先前元素和最后一个元素的新列表。 但是每次添加新元素时, ToList()生成一个列表,其中只有一个项目是observableSelectedQuantity最后一个元素。 是否可以使用IChangeSet解决我的问题? 或者我需要改变我的方式来访问observableSelectedQuantity列表值?

我预计每次将新元素添加到observableSelectedQuantityToList都会生成包含先前元素和最后一个元素的新列表。

不,它不需要,但您不需要IChangeSet<int>来跟踪来自IObservable<int>的最后两个值。 您可以将先前的值存储在变量中,例如:

IObservable<int> observableSelectedQuantity = this.WhenAnyValue(x => x.SelectedQuantity);
IObservable<bool> observableOfBools = observableSelectedQuantity.Select(i => ConvertToBool(i));
...
int? previousValue = null;
private bool ConvertToBool(int currentValue)
{
    bool returnValue = ...; //logic

    previousValue = currentValue;
    return returnValue;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM