2016-06-30 10 views
1

Ich habe ein string[][] jaggedarray wie dasWie entfernen Sie die gleichen Werte in einer anderen Reihenfolge in einer Zeichenfolge [] []?

  1. hello1, Hello2, hello3
  2. Hello4, Hello5, Hello6
  3. hello3, hello1, Hello2

ich durch alle Saiten wie in

gehen versucht
foreach(var single in jaggedarray) 
{ 

} 

aber ich war wegen der Komplexität von Putt verloren Alle Werte werden in einem zusätzlichen Array angezeigt und jedes Feld mit jedem einzelnen Feld verglichen, um eine Entscheidung zu treffen.

Was ich jetzt tat, ist um jede Saite alphabetisch so

  1. hello1, Hello2, hello3
  2. Hello4, Hello5, Hello6
  3. hello3, hello1, Hello2

wurde

  1. Hallo1, Hallo2, Hallo3
  2. Hello4, Hello5, Hello6
  3. hello1, Hello2, hello3

Und dann mit distinct() auf sich.

Es funktioniert so, aber ich suche einen eleganten Weg, denn jetzt habe ich viel hin und her in meinem Code umwandeln.

Wie kann eine Funktion aussehen, die 1. oder 3. entfernt, da sie dieselben Werte enthalten, aber in einer anderen Reihenfolge?

+0

einfach zu pingelig, aber 'string [] []' ist nicht ein 2D-Array - es ist ein * gezackter Array *. 'string [,]' ist 2D. – Enigmativity

+0

Können Sie bitte die Eingabedaten als gültigen C# -Code und die gewünschte Ausgabe anzeigen? Es wäre auch toll, wenn du zeigen könntest, was du probiert hast, auch wenn es nicht funktioniert oder gar kompiliert wurde. – Enigmativity

Antwort

3

Dies funktioniert für mich:

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()); 

Grundsätzlich dieser Code beginnt mit einem leeren gezackten Array (new string[0][]) und iteriert durch jaggedarray und fügt nur jeden Sub-Array, wenn es mit genau keine Array existiert die gleiche Elemente. Es weist die endgültige Ausgabe dann erneut jaggedarray zu.

ich diese:

result

+0

Bitte erläutern Sie, was Ihr Code tut. –

+0

@VitalisHommel - Fertig. – Enigmativity

+0

Können Sie mir bitte mit dieser Frage helfen: http: //stackoverflow.com/questions/38120664/how-to-group-by-on-2-child-entities-and-get-total-of-both-this- Kind-Entitäten –

Verwandte Themen