如何解决如何跳过条件上的动态数据排序运算符?
考虑使用动态数据运算符对排序比较器进行动态更改(代码从此处获取:https://github.com/RolandPheasant/DynamicData.Snippets/blob/master/DynamicData.Snippets/Sorting/ChangeComparer.cs)
var optionChanged = this.WhenValueChanged(@this => @this.Option)
.Select(opt => opt == ChangeComparereOption.Ascending
? SortExpressionComparer<int>.Ascending(i => i)
: SortExpressionComparer<int>.Descending(i => i));
//create a sorted observable list
DataSource = source.Connect()
.sort(optionChanged)
.AsObservableList();
现在,我的目标是“跳过”排序运算符并按条件传递IObservable<IChangeSet<T>>
数据,因此它不仅可以处理升序/降序排序,而且什么也不做。
因此,我想到了这个扩展名:
public static class DynamicDataExtensions
{
public static IObservable<IChangeSet<T>> SortIfNecessary<T>(this IObservable<IChangeSet<T>> source,IObservable<IComparer<T>> comparerChanged,bool skip)
{
if (skip)
{
return source;
}
else
{
return source.sort(comparerChanged);
}
}
}
但是,这不起作用。但是,有趣的是,如果返回类型为:IObservable<ISortedChangeSet<TObject,TKey>>
,它就可以工作。但是在那种情况下,无法转换通过的IObservable数据。
从文档中
public interface ISortedChangeSet<TObject,TKey> : IChangeSet<TObject,TKey>,IChangeSet,IEnumerable<Change<TObject,TKey>>,IEnumerable
我做错了什么以及如何解决?
我也愿意寻求其他产生相同结果的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。