我有一个C#的sting列表,可以是x行长。下面将显示一个小例子。我想知道我现在如何获得小的不同列表,以便A
不会出现多次。这个列表即将推出代码。所以它是随机的。
list = {a,b,a,f,a,null,a,e,a,e}
答案 0 :(得分:8)
尝试LINQ .... 更具体... 鉴于你的列表实际上是字符串[],你可以这样做......
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);
}
答案 1 :(得分:1)
您还可以使用HashSet<T>
:
var set = new HashSet<string>(list);
如果您想用唯一列表替换旧列表:
list = set.ToList();
HashSet<T>
有许多useful and efficient methods经常被忽视。
HashSet<T>
类提供高性能的集合操作。一套 是一个不包含重复元素的集合,以及它的集合 元素没有特别的顺序。
更新 “以便A
不会多次出现”
由于列表包含小写a
,我假设你不知道默认情况下.NET比较区分大小写。您可以通过以下方式比较不区分大小写:
var set = new HashSet<string>(list, StringComparer.OrdinalIgnoreCase);
答案 2 :(得分: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编写的。您将无法使用转储方法