如何比较数组中的值

时间:2009-07-06 13:52:44

标签: c# .net c#-2.0 arrays

如果你有一个字符串“1,2,3,1,5,7”,你可以把它放在一个数组或哈希表或任何被认为最好的。

您如何确定所有值都相同?在上面的例子中它会失败,但如果你有“1,1,1”那就是真的。

5 个答案:

答案 0 :(得分:8)

使用lambda表达式可以很好地完成。

对于名为arr的数组:

var allSame = Array.TrueForAll(arr, x => x == arr[0]);

列表(List<T>),名为lst

var allSame = lst.TrueForAll(x => x == lst[0]);

对于可迭代(IEnumerable<T>),名为col

var first = col.First();
var allSame = col.All(x => x == first);

请注意,这些方法不处理空数组/列表/迭代。然而,这种支持是微不足道的。

答案 1 :(得分:6)

遍历每个值,将第一个值存储在变量中,并将数组的其余部分与该变量进行比较。瞬间失败,你知道所有的值都不一样。

答案 2 :(得分:5)

怎么样......

string numArray = "1,1,1,1,1";
return numArrray.Split( ',' ).Distinct().Count() <= 1;

答案 3 :(得分:1)

我认为使用List<T>.TrueForAll将是一种灵活的方法。

http://msdn.microsoft.com/en-us/library/kdxe4x4w.aspx

答案 4 :(得分:1)

不如简单循环有效(因为它总是处理所有项目,即使结果可以更快地确定),但是:

if (new HashSet<string>(numbers.Split(',')).Count == 1) ...