![](/img/trans.png)
[英]How to convert List<KeyValuePair<int,int>> to 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();
我预计每次将新元素添加到observableSelectedQuantity
, ToList
都会生成包含先前元素和最后一个元素的新列表。 但是每次添加新元素时, ToList()
生成一个列表,其中只有一个项目是observableSelectedQuantity
最后一个元素。 是否可以使用IChangeSet
解决我的问题? 或者我需要改变我的方式来访问observableSelectedQuantity
列表值?
我预计每次将新元素添加到
observableSelectedQuantity
,ToList
都会生成包含先前元素和最后一个元素的新列表。
不,它不需要,但您不需要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.