【发布时间】:2016-07-27 13:54:47
【问题描述】:
检查字符串数组(列表)的元素是否具有不同值的最优雅方法是什么。
例如
string[] myArray = { "one", "one", "two"};
输出:
假
例如
string[] myArray = { "one", "two", "three" };
输出:
是的
【问题讨论】:
检查字符串数组(列表)的元素是否具有不同值的最优雅方法是什么。
例如
string[] myArray = { "one", "one", "two"};
输出:
假
例如
string[] myArray = { "one", "two", "three" };
输出:
是的
【问题讨论】:
myArray.Distinct().Count() == myArray.Length
【讨论】:
怎么样
string[] myArray = { "one", "two", "three" };
bool result = myArray.Length == myArray.Distinct().Count();
.Distinct() 从 List 中删除重复值 - 因此您只需比较初始数组中的项数和不同的项数。
【讨论】:
不使用 Linq 的不同方法:
var test = new HashSet<string>();
foreach (var str in myArray)
{
if (test.Contains(str)) return false;
test.Add(str);
}
return true;
可能在某些数据集上表现更好。
【讨论】:
虽然不是很优雅,但这是我首先想到的。
string[] myArray = { "one", "one", "three" };
bool result = myArray.Length == new HashSet<string>(myArray).Count;
我有点晚了...我希望我不必指定 <string> 部分...
【讨论】:
myArray.ToHashSet()。奇怪的是MS没有添加这样的标准扩展方法。