簡體   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