如何从arraylist中获取不同/唯一的值?

use*_*510 1 c# arraylist

是否有可能从c#中的arraylist中获取唯一值?实际上我有一个包含值= 100,101,102,101,100,102,103的arraylist,但是我想要这样的唯一值,如100,101,102,103.那么什么是c#语法来从arralist中获取不同/唯一值?

我试过了

Arraylist Others=new Arraylist(); 
others=TakeanotherValues();
others.Distinct().Toarray();
Run Code Online (Sandbox Code Playgroud)

但是错误是'System.Collection.ArrayList不保留definct的定义'

Sol*_*lli 7

除非您必须(例如因为您使用的是.NET 1),否则请不要使用ArrayList,它是一个旧的非泛型类.相反,List<T>System.Collections.Generic命名空间中使用,例如List<int>List<object>(后者在功能上等同于ArrayList,因为您可以向其添加任何内容).
一般情况下,System.Collections除非你确定自己在做什么,否则不要直接在里面使用任何东西; System.Collections.Generic而是使用集合.

您可以Distinct()对数据使用LINQ方法,但是如果要使用ArrayList,首先需要将其强制转换为IEnumerable<T>使用Cast<object>(),如下所示:

using System.Linq;

// ...

var distinctItems = myList.Cast<object>().Distinct();
Run Code Online (Sandbox Code Playgroud)

这相当于手动创建一个集合(例如HashSet<object>),将列表中的每个项目添加到其中,然后从该集合中创建列表,因为根据定义集合不会保留重复项目(如果您插入一个项目,它们不会抱怨但是,他们只是忽略它).


Mar*_*rco 5

您可以使用 Linq:

var distinctArraylist = yourArrayList.ToArray().Distinct();
Run Code Online (Sandbox Code Playgroud)