代码之家  ›  专栏  ›  技术社区  ›  Simant

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

  •  0
  • Simant  · 技术社区  · 7 年前

    是的 . 在下面的扩展数组中,它应该返回我

      string[] extensions = { ".doc", ".doc", ".bmp" };
      var result = extensions.All(x => extensions.Contains(x));
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   Tim Schmelter    7 年前

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

    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();
    
        2
  •  0
  •   Rui Jarimba    7 年前

    区分大小写比较:

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

    不区分大小写比较:

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