检查两个逗号分隔的字符串是否相等(对于内容集)

我有四个字符串,如下所示。 虽然它们在逗号后具有不同的字符顺序和不同的间距 – 但它们被认为具有same business value

  1. 如何检查所有字符串是否相同(根据上面解释的业务场景)? 我有以下代码,但在逗号后的空格情况下失败。
  2. Enumerable.SequenceEqual更好的方法(为此目的)是什么?

注意:“A,B”将被视为与“B,A,B,A,B”相同

注意:我正在使用Visual Studio 2010.Net Framework 4

  string firstString = "A,B,C"; string secondString = "C,A,B"; string thirdString = "A,B, C"; string fourthString = "C, A,B"; //Set 1 Test List firstList = new List(firstString.Split(',')); List secondLsit = new List(secondString.Split(',')); bool isStringsSame = Enumerable.SequenceEqual(firstList.OrderBy(t => t), secondLsit.OrderBy(t => t)); Console.WriteLine(isStringsSame); //Set 2 Test List thirdList = new List(thirdString.Split(',')); List fourthList = new List(fourthString.Split(',')); bool isOtherStringsSame = Enumerable.SequenceEqual(thirdList.OrderBy(t => t), fourthList.OrderBy(t => t)); Console.WriteLine(isOtherStringsSame); Console.ReadLine(); 

更新

使用OrdianlIgnoreCase忽略大小写OrdianlIgnoreCase 如何在案例敏感模式下使用HashSet .Contains()方法?

参考

  1. 使用.NET检查逗号分隔列表中字符串的最佳方法?
  2. 比较两个List 对象是否相等,忽略顺序
  3. 为什么IEnumerable .Select()在2种情况中有1种工作? 无法从使用中推断出来
  4. 比较两个以逗号分隔的字符串匹配的最短代码是什么?
  5. 使用c#和linq将分隔的字符串拆分为层次结构
  6. 使用LINQ计算两个字符串之间的匹配字符
  7. Usinq Linq选择半逗号分隔字符串中的项目?
  8. 根据某些属性确定列表中的两个或多个对象是否相等

你会认为A,B等于B,A,B,A,B吗? 如果是这样,你应该使用套装。 如果不是,则有序序列是合适的。

编辑:现在我们知道你真的想要设置平等:

 var set1 = new HashSet(firstString.Split(',').Select(t => t.Trim())); bool setsEqual = set1.SetEquals(secondString.Split(',').Select(t => t.Trim())); 

如果我们不是在设定平等之后……

要忽略这些空格,你应该修剪它们。 例如:

 var firstOrdered = firstString.Split(',') .Select(t => t.Trim()) .OrderBy(t => t); var secondOrdered = secondString.Split(',') .Select(t => t.Trim()) .OrderBy(t => t); bool stringsAreEqual = firstOrdered.SequenceEqual(secondOrdered);