C# 如何在ReactiveUI中区分派生集合的内容
我使用ReactiveUI并有一个ReactiveList实例。例如,它包含以下项目:C# 如何在ReactiveUI中区分派生集合的内容,c#,system.reactive,reactiveui,C#,System.reactive,Reactiveui,我使用ReactiveUI并有一个ReactiveList实例。例如,它包含以下项目: { 1, 2, 3, 4, 1, 2, 5 } 如何创建包含以下项的distincted DerivedCollection: { 1, 2, 3, 4, 5 } ?这不是性能最好的代码,但我在一个简单的控制台应用程序中实现了这一点 var list = new ReactiveList<int>(); IReactiveDerivedList<int> dlist = null;
{ 1, 2, 3, 4, 1, 2, 5 }
如何创建包含以下项的distincted DerivedCollection:
{ 1, 2, 3, 4, 5 }
?这不是性能最好的代码,但我在一个简单的控制台应用程序中实现了这一点
var list = new ReactiveList<int>();
IReactiveDerivedList<int> dlist = null;
dlist = list.CreateDerivedCollection(x => x, x =>
{
var contains = dlist?.Contains(x) ?? false;
return !contains;
});
list.AddRange(new[] { 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1 });
Console.WriteLine(string.Join(", ", dlist.Select(x => x.ToString())));
Console.ReadKey();
// Outputs: 1, 2, 3, 4, 5, 6
这基本上是根据新元素是否已经存在来过滤集合。您可以看到Linq Distinct,它将直接用于整数,如果这是一个类,则实现IEquatable,然后使用Distinct这看起来像是一个漂亮的解决方案,对于我+1