2016-07-27 16 views

Antwort

11
myArray.Distinct().Count() == myArray.Length 
+4

@Habib es die Anzahl der eindeutigen Elemente mit der Anzahl der Elemente vergleicht, was scheint die Frage zu beantworten. –

+0

Oh Mann, ich brauche Kaffee ... und Pause. +1 – Habib

5

Wie wäre es

string[] myArray = { "one", "two", "three" }; 

bool result = myArray.Length == myArray.Distinct().Count(); 

.Distinct() dupicate Werte aus einer Liste entfernt - so müssen Sie nur compar e Die Anzahl der Elemente im ursprünglichen Array und die eindeutige.

1

Ein anderes Verfahren ohne Verwendung von Linq:

var test = new HashSet<string>(); 
foreach (var str in myArray) 
{ 
    if (test.Contains(str)) return false; 
    test.Add(str); 
} 
return true; 

könnte mit einigen Datensätzen besser.

1

Obwohl nicht sehr elegant, ist es das erste, was mir in den Sinn kam.

string[] myArray = { "one", "one", "three" }; 

bool result = myArray.Length == new HashSet<string>(myArray).Count; 

ich irgendwie spät bin ... Und ich wünsche, dass ich nicht den <string> Teil angeben musste ...

+0

Ich denke, du meinst etwas wie 'myArray.ToHashSet()'. Es ist seltsam, dass MS keine solche Standard-Erweiterungsmethode hinzugefügt hat. –

Verwandte Themen