如何在字符串[] []中删除不同顺序的相同值?

时间:2016-06-30 23:33:52

标签: c#

我有string[][] jaggedarray喜欢

  1. Hello1,Hello2,Hello3
  2. Hello4,Hello5,Hello6
  3. Hello3,Hello1,Hello2
  4. 我尝试了所有字符串,如

    foreach(var single in jaggedarray)
    {
    
    }
    

    但由于将所有值放入额外数组并将每个字段与单个字段进行比较以确定决策的复杂性,我迷失了方向。

    我现在所做的是按字母顺序排列每个字符串

    1. Hello1,Hello2,Hello3
    2. Hello4,Hello5,Hello6
    3. Hello3,Hello1,Hello2
    4. 成了

      1. Hello1,Hello2,Hello3
      2. Hello4,Hello5,Hello6
      3. Hello1,Hello2,Hello3
      4. 然后使用distinct()。

        它以这种方式工作,但我正在寻找一种优雅的方式,因为现在我的代码中有很多来回转换。

        一个函数可以删除1.3.,因为它们包含相同的值,但顺序不同?

1 个答案:

答案 0 :(得分:3)

这对我有用:

var jaggedarray = new []
{
    new [] { "Hello1", "Hello2", "Hello3" },
    new [] { "Hello4", "Hello5", "Hello6" },
    new [] { "Hello3", "Hello1", "Hello2" },
};

jaggedarray =
    jaggedarray
        .Aggregate(
            new string[0][],
            (a, x) =>
                a.Any(y => !x.Except(y).Any())
                    ? a
                    : a.Concat(new [] { x }).ToArray());

基本上,此代码以空的锯齿状数组(new string[0][])开始,并且它遍历jaggedarray并且只在不存在任何具有完全相同元素的数组时才添加每个子数组。然后它将最终输出重新分配给jaggedarray

我明白了:

result