Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ReactiveUI中区分派生集合的内容_C#_System.reactive_Reactiveui - Fatal编程技术网

C# 如何在ReactiveUI中区分派生集合的内容

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;

我使用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;
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