3

我有一个可以长 x 行的 C# 刺痛列表。下面将显示一个小示例。我想知道我现在如何获得小的不同列表,这样它就A不会出现多次。这个列表是为代码而来的。所以它是随机的。

list = {a,b,a,f,a,null,a,e,a,e}
4

3 回答 3

8

尝试 LINQ .... 更具体地说...鉴于您的列表实际上是 string[] 您可以这样做...

string[] list = {"a","b","a","f","a",null,"a","e","a","e"};
var distinctList = list.Distinct();

foreach (var str in distinctList)//Distinct list of values
{
    Console.Write(str); 
}
于 2013-08-21T11:04:01.743 回答
1

您还可以使用HashSet<T>

var set = new HashSet<string>(list);

如果您想用唯一列表替换旧列表:

list = set.ToList();

HashSet<T>有许多有用且有效的方法,但往往被忽视。

该类HashSet<T>提供高性能的集合操作。集合是不包含重复元素且其元素没有特定顺序的集合。

更新 “这样A就不会出现多次”

由于该列表包含小写a,我假设您不知道 .NET 默认比较区分大小写。您可以通过这种方式比较不区分大小写:

var set = new HashSet<string>(list, StringComparer.OrdinalIgnoreCase);
于 2013-08-21T11:05:42.680 回答
0

只需像这样使用 distinct() 关键字:

List<string> foo = new List<string> {"a","b","a","f", "a", null,"a" ,"e","a","e"};
foreach (var element in foo.Distinct())
{
    element.Dump();
}

输出:

a
b
f
null 
e

这是用 Linqpad 编写的。您将无法使用 Dump 方法

于 2013-08-21T11:05:50.437 回答