Εκφράσεις λάμδα C# LINQ

Ekphraseis Lamda C Linq



Η έκφραση λάμδα στο C# παίρνει απευθείας τις εκφράσεις/προτάσεις υπό όρους ως σώμα της χωρίς όνομα. Πρέπει να καθορίσουμε τις παραμέτρους και στη συνέχεια να του αντιστοιχιστούν οι εκφράσεις. Ενώ εργάζεστε με το Language Integrated Query (LINQ), ενδέχεται να χρειαστεί να μετατρέψετε τα δεδομένα που υπάρχουν στην προέλευση δεδομένων ή να μετατρέψετε μια πηγή δεδομένων σε άλλη πηγή δεδομένων. Σε αυτόν τον οδηγό, θα δούμε πώς να φιλτράρουμε τις εγγραφές από την πηγή δεδομένων, καθορίζοντας την έκφραση λάμδα και επιλέγοντας τις εγγραφές από την πηγή δεδομένων.

Σύνταξη:

  1. Έκφραση λάμδα: (παράμετροι) => έκφραση
  2. Δήλωση Λάμδα: { δήλωση υπό όρους 1 δήλωση2 … }

Παράδειγμα 1:

Δημιουργήστε τη λίστα 'λιπάσματα' που περιέχει πέντε χορδές. Χρησιμοποιήστε την έκφραση λάμδα που επιστρέφει όλες τις συμβολοσειρές από τη λίστα.

χρησιμοποιώντας Σύστημα ;
χρησιμοποιώντας System.Linq ;
χρησιμοποιώντας Σύστημα.Συλλογές.Γενικές ;

τάξη Παράδειγμα LambdaExpression {

στατικός δημόσιο κενός Κύριος ( )
{

// Δημιουργία λίστας λιπασμάτων
Κατάλογος λιπασμάτων = νέος Λίστα ( ) ;
λιπάσματα . Προσθήκη ( 'Ουρία' ) ;
λιπάσματα . Προσθήκη ( 'άζωτο' ) ;
λιπάσματα . Προσθήκη ( 'κάλιο' ) ;
λιπάσματα . Προσθήκη ( 'Φωσφορικό διαμμώνιο' ) ;
λιπάσματα . Προσθήκη ( 'φώσφορος' ) ;

// Χρησιμοποιήστε το LambdaExpression για να επιλέξετε όλα τα λιπάσματα
ήταν αποτέλεσμα = λιπάσματα . Επιλέγω ( inp1 => inp1 ) ;
για κάθε ( ήταν Εγώ σε αποτέλεσμα )
{
Κονσόλα . WriteLine ( Εγώ ) ;
}

}
}

Παραγωγή:









Εξήγηση:



1. Δημιουργήστε λίστα τύπου συμβολοσειράς με το όνομα 'fertilizers'. Προσθέστε πέντε συμβολοσειρές σε αυτήν τη λίστα.

2. Χρησιμοποιήστε την έκφραση λάμδα για να επιλέξετε όλα τα λιπάσματα. Εδώ, η έκφραση χρησιμοποιείται με τον τελεστή 'Επιλογή'. Η έκφραση είναι inp1 => inp1. Στη συνέχεια, χρησιμοποιούμε τον βρόχο 'foreach' για να εμφανίσουμε τις συμβολοσειρές που επιστρέφονται από την έκφραση λάμδα.





Παράδειγμα 2:

Χρησιμοποιήστε την έκφραση λάμδα για να επιλέξετε τα λιπάσματα που περιλαμβάνουν 'Φωσφορικό'.

χρησιμοποιώντας Σύστημα ;
χρησιμοποιώντας System.Linq ;
χρησιμοποιώντας Σύστημα.Συλλογές.Γενικές ;

τάξη Παράδειγμα LambdaExpression {

στατικός δημόσιο κενός Κύριος ( )
{

// Δημιουργία λίστας λιπασμάτων
Κατάλογος λιπασμάτων = νέος Λίστα ( ) ;
λιπάσματα . Προσθήκη ( 'Ουρία' ) ;
λιπάσματα . Προσθήκη ( 'άζωτο' ) ;
λιπάσματα . Προσθήκη ( 'ορθο-φωσφορικό' ) ;
λιπάσματα . Προσθήκη ( 'Φωσφορικό διαμμώνιο' ) ;
λιπάσματα . Προσθήκη ( 'φώσφορος' ) ;

// Χρησιμοποιήστε το LambdaExpression για να επιλέξετε τα λιπάσματα που περιλαμβάνουν - 'Φωσφορικό'
ήταν αποτέλεσμα = λιπάσματα . Οπου ( inp1 => inp1 . Περιέχει ( 'Φωσφορικό άλας' ) ) ;
για κάθε ( ήταν Εγώ σε αποτέλεσμα )
{
Κονσόλα . WriteLine ( Εγώ ) ;
}

}
}

Παραγωγή:



Υπάρχουν δύο χορδές που περιλαμβάνουν 'Φωσφορικό' σε αυτές.

Εξήγηση:

1. Δημιουργήστε μια λίστα με τύπο συμβολοσειράς με το όνομα 'fertilizers'. Προσθέστε πέντε συμβολοσειρές σε αυτήν τη λίστα.

2. Εδώ, η έκφραση χρησιμοποιείται με τον τελεστή 'Where'. Η έκφραση είναι inp1 => inp1.Contains ('Phosphate'). Στη συνέχεια, χρησιμοποιούμε τον βρόχο 'foreach' για να εμφανίσουμε τις συμβολοσειρές που επιστρέφονται από την έκφραση λάμδα.

Παράδειγμα 3:

Ας έχουμε μια λίστα (order_quantity) που περιέχει τρεις παραγγελίες. Καθορίστε την έκφραση λάμδα για να προσθέσετε 5 σε κάθε παραγγελία.

χρησιμοποιώντας Σύστημα ;
χρησιμοποιώντας System.Linq ;
χρησιμοποιώντας Σύστημα.Συλλογές.Γενικές ;

τάξη Παράδειγμα LambdaExpression {

στατικός δημόσιο κενός Κύριος ( )
{

// Δημιουργία λίστας ποσοτήτων
Λίστα παραγγελία_ποσότητα = νέος Λίστα ( ) ;
Ποσότητα Παραγγελίας . Προσθήκη ( 5 ) ;
Ποσότητα Παραγγελίας . Προσθήκη ( 7 ) ;
Ποσότητα Παραγγελίας . Προσθήκη ( 8 ) ;

// Χρησιμοποιήστε LambdaExpression σε 5 σε κάθε παραγγελία.
ήταν αποτέλεσμα = Ποσότητα Παραγγελίας . Επιλέγω ( inp1 => inp1 + 5 ) ;
για κάθε ( ήταν Εγώ σε αποτέλεσμα )
{
Κονσόλα . WriteLine ( Εγώ ) ;
}

}
}

Παραγωγή:

Η λίστα [5,7,8] μετατρέπεται σε [10,12,13].

Εξήγηση:

1. Δημιουργήστε τη λίστα με τις ποσότητες τύπου Integer.

2. Επιλέγουμε πρώτα τις παραγγελίες και μετά προσθέτουμε 5 σε κάθε παραγγελία. Έτσι, χρησιμοποιείται ο τελεστής 'Επιλογή'. Η έκφραση είναι inp1 => inp1 + 5.

Παράδειγμα 4:

Δημιουργήστε μια πηγή δεδομένων λίστας τύπου Event (με τρία χαρακτηριστικά – Event_Name, Event_Status και Event_Budget) και επιστρέψτε τις εγγραφές με τον Event_Budget που είναι μεγαλύτερος από 5000.

χρησιμοποιώντας Σύστημα ;
χρησιμοποιώντας System.Linq ;
χρησιμοποιώντας Σύστημα.Συλλογές.Γενικές ;

// Δημιουργήστε μια τάξη με το όνομα - 'Event_Source' με 5 συμβάντα.
δημόσιο τάξη Event_Source
{
δημόσιο στατικός κενός Κύριος ( )
{
// Λίστα συμβάντων
IList γεγονότα = νέος Λίστα ( ) {
νέος Εκδήλωση ( ) { Event_Name = «Τεχνικό Στρατόπεδο» ,Κατάσταση_συμβάντος = 'Σχεδιασμένος' ,Εκδήλωση_Προϋπολογισμός = 10000 } ,
νέος Εκδήλωση ( ) { Event_Name = 'Marketing Camp' ,Κατάσταση_συμβάντος = 'Ολοκληρώθηκε το' ,Εκδήλωση_Προϋπολογισμός = 5000 } ,
νέος Εκδήλωση ( ) { Event_Name = 'Αλλα' ,Κατάσταση_συμβάντος = 'Σχεδιασμένος' ,Εκδήλωση_Προϋπολογισμός = 1000 } ,
νέος Εκδήλωση ( ) { Event_Name = 'Πολιτική' ,Κατάσταση_συμβάντος = 'Σχεδιασμένος' ,Εκδήλωση_Προϋπολογισμός = 13000 } ,
νέος Εκδήλωση ( ) { Event_Name = 'Χρηματοδότηση' ,Κατάσταση_συμβάντος = 'Ολοκληρώθηκε το' ,Εκδήλωση_Προϋπολογισμός = 20000 } ,
} ;

//Event_Budget μεγαλύτερο από 5000.
ήταν αποτέλεσμα = εκδηλώσεις . Οπου ( inp1 => inp1 . Event_Budget > 5000 ) ;
για κάθε ( ήταν Εγώ σε αποτέλεσμα ) {
Κονσόλα . WriteLine ( 'ΟΝΟΜΑ: ' + Εγώ . Event_Name + 'ΚΑΤΑΣΤΑΣΗ:' + Εγώ . Event_Status + 'ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ:' + Εγώ . Event_Budget ) ;
}
}
}

δημόσιο τάξη Εκδήλωση {
δημόσιο σειρά Event_Name { παίρνω ; σειρά ; }
δημόσιο σειρά Event_Status { παίρνω ; σειρά ; }
δημόσιο ενθ Event_Budget { παίρνω ; σειρά ; }
}

Παραγωγή:

Υπάρχουν τρεις εγγραφές στη λίστα 'συμβάντα' με τον Προϋπολογισμό Συμβάντος μεγαλύτερο από 5000.

Εξήγηση:

1. Αρχικά, δημιουργούμε μια κλάση 'Ευβάντα' με τρία χαρακτηριστικά.

2. Στη συνέχεια, δημιουργούμε μια λίστα με πέντε συμβάντα.

3. Χρησιμοποιώντας το inp1 => inp1.Event_Budget > 5000 έκφραση λάμδα, επιλέγουμε τις εγγραφές με Event_Budget μεγαλύτερο από 5000.

Παράδειγμα 5:

Χρησιμοποιήστε τον προηγούμενο κώδικα και αλλάξτε την έκφραση λάμδα. Επιστρέψτε τα συμβάντα με το Event_Name που τελειώνει με 'Camp' και με το Event_Status που είναι 'Planned'.

//Έκφραση λάμδα - Το όνομα_συμβάντος τελειώνει με 'Καμπ' και η κατάσταση_συμβάντος είναι 'Σχεδιασμένο'.
ήταν αποτέλεσμα = εκδηλώσεις . Οπου ( inp1 => inp1 . Event_Name . Τελειώνει με ( 'Κατασκήνωση' ) && inp1 . Event_Status == 'Σχεδιασμένος' ) ;
για κάθε ( ήταν Εγώ σε αποτέλεσμα ) {
Κονσόλα . WriteLine ( 'ΟΝΟΜΑ: ' + Εγώ . Event_Name + 'ΚΑΤΑΣΤΑΣΗ:' + Εγώ . Event_Status + 'ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ:' + Εγώ . Event_Budget ) ;
}

Παραγωγή:

Υπάρχει μόνο ένας δίσκος που ικανοποιεί και τις δύο προϋποθέσεις.

Εξήγηση:

Εδώ, καθορίζουμε δύο συνθήκες στην έκφραση λάμδα. Ο τελεστής && (και) χρησιμοποιείται για να κάνει τις δύο συνθήκες ως True. Η πρώτη συνθήκη χρησιμοποιεί τη μέθοδο EndsWith() για να ελέγξει εάν μια συμβολοσειρά τελειώνει με τη δεδομένη συμβολοσειρά. Η δεύτερη συνθήκη χρησιμοποιεί τον τελεστή «Σύγκριση» (==) για να ελέγξει αν και οι δύο τιμές είναι ίσες ή όχι.

συμπέρασμα

Στην C#, η έκφραση λάμδα παίρνει τις εκφράσεις/προτάσεις υπό όρους ως σώμα της χωρίς όνομα. Πρέπει να καθορίσουμε τις παραμέτρους. Στη συνέχεια, οι εκφράσεις αντιστοιχίζονται σε αυτό. Βασικά, αυτά χρησιμοποιούνται για το φιλτράρισμα των εγγραφών από τη δεδομένη πηγή δεδομένων, τη μετατροπή των στοιχείων και την επιλογή των στοιχείων από την πηγή/ακολουθία δεδομένων. Σε αυτόν τον οδηγό, συζητήσαμε τα πέντε διαφορετικά παραδείγματα που επιλέγουν, φιλτράρουν και μετασχηματίζουν τα στοιχεία χρησιμοποιώντας την έκφραση λάμδα.