2016-07-25 17 views
-5

Ich habe nach einigen guten Erklärungen dieser aufzählbaren Methoden gesucht, aber scheint nicht, einen zu finden, der es richtig erklärt.Wie man Enumerable Methoden verwendet

Ich habe ein paar von ihnen, wie wählen Sie verwenden, fahren, orderby und Art, aber ich weiß nicht, wie sie tatsächlich arbeiten

Zum Beispiel

string[] RandomNames = names.OrderBy(x => rnd.Next()).ToArray(); 

oder

string[] SelectedNames = names.Select(i => i.ToString()).ToArray() 

So gibt es ein paar Dinge, die mir unklar sind:

  • Also was macht die => eigentlich
  • Wie würde eine Gruppe arbeiten und wofür würde sie verwendet werden?

Eine kurze Erklärung würde geschätzt werden, aber eine eingehende Erklärung ist, was ich suche.

+1

'=>' bedeutet lamda-Funktion, in der Probe über eine Funktion, die ein Argument nimmt ('X') und RND 'kehrt zurück.Next() 'Wert –

+2

Sie können dies aus" Dokumentation "lesen: http://StackOverflow.com/Documentation/C%23/68/Linq-Arbies/4735/Basics#T=201607251259571763764 – Kinetic

+0

Denken Sie an das Lambda-Argument (x) als ein einzelnes Element innerhalb des Arrays für diese Funktionen – Hristo

Antwort

2

=> ist Lambda-Ausdruck.

Was ist Lambda-Ausdruck und warum ist so nützlich? Lassen Sie uns Beispiel betrachten: Sie haben die Liste von Zufalls integers und Sie wollen nur 2. In gewohnter Weise geteilt wählen, um es so aussehen:

public bool IsDevidedByTwo(int number) 
{ 
    if(number % 2 == 0) 
     return true; 
    return false ; 
} 

List<int> DevidedByTwoList = new List<int>; 

foreach(var number in RandomIntsList) 
{ 
    if(IsdevidedByTwo(number)) DevidedByTwoList.Add(number); 
} 

Es ist einfach klar ein, aber viel Platz in Anspruch nimmt, so kann man‘ Ich verstehe es sofort, besonders wenn die Funktion IsDevidedByTwo() in einer anderen Datei ist. Wie wird es aussehen, wenn Sie verwenden lamba Ausdruck und LINQ:

List<int> DevidedByTwoList = RandomIntsList.Where(number => number % 2 == 0).ToList(); 

Eine Zeile statt 12.

number => number % 2==0 ist Lambda-Ausdruck. Es ist zu prüfen, ob die Nummer durch 2 geteilt wird. Es funktioniert genau wie IsDevidedByTwo Funktion, aber Sie müssen es nicht nennen.

.Where() ist LINQ-Methode, die Filter für Beispiel Liste und wählen Sie nur Elemente erfüllen Bedingung in Klammern. Wenn Sie mehr erfahren möchten, lesen Sie etwas über LINQ und lambda expresions.

1

Ein Lambda-Ausdruck ist eine anonyme Funktion und wird hauptsächlich zum Erstellen von Delegaten in LINQ verwendet. Einfach gesagt, ist es eine Methode ohne Deklaration, d. H. Zugriffsmodifizierer, Rückgabewertdeklaration und Name.

Es reduziert die Eingabe. Sie müssen den Namen der Funktion, ihren Rückgabetyp und ihren Zugriffsmodifikator nicht angeben. Beim Lesen des Codes müssen Sie die Definition der Methode nicht anderswo suchen.

Hier ist ein sehr guter Artikel mit Beispielen und Erklärungen.

geekswithblogs