使用Lambda表达式检查字符串数组是否具有相同的字符串值

时间:2018-10-25 09:19:38

标签: c# lambda

我有一个extensions数组,我必须使用lambda表达式找出数组中的所有元素具有相同的值还是不同的值。我已经写了下面的代码,它总是让我 true 。在以下扩展名数组中,它应返回 false ,因为.bmp是与其他扩展名不同的扩展名。你能帮我完成任务吗?

  string[] extensions = { ".doc", ".doc", ".bmp" };
  var result = extensions.All(x => extensions.Contains(x));

2 个答案:

答案 0 :(得分:4)

您正在检查数组中是否包含所有项目,这是正确的。

您要

string firstExt = extensions.First();
var allSame = extensions.Skip(1).All(x => firstExt == x); // use String.Equals(s1,s2,StringComparison.InvariantCultureIgnoreCase) if you want to compare in a case insensitive manner

使用Distinct的其他方法(效率不高):

var allSame = !extensions.Distinct().Skip(1).Any();

答案 1 :(得分:0)

区分大小写的比较:

string[] extensions = { ".doc", ".doc", ".bmp" };
bool hasSameExtensions = extensions.Distinct().Count() == 1;

不区分大小写的比较:

string[] extensions = { ".doc", ".doc", ".DOC" };
bool hasSameExtensions = extensions.Distinct(StringComparer.OrdinalIgnoreCase).Count() == 1;