Eh bien, il a été un moment et j'ai travaillé avec des trucs vraiment cool ces derniers temps.
J'ai pensé partager cette pratique peu tid de l'info à vous rendre la vie plus facile. NET spécifiquement C #.
Combien de fois avez-vous en boucle à travers une liste correspondant à la recherche de propriétés de classe et de les ajouter à une autre liste pour les afficher? Eh bien, je sais que j'ai fait il moyen de nombreuses fois alors quand j'ai commencé à utiliser des expressions LINQ et lambda je suis vraiment excité!
Ok, donc sans plus un ne laisse aller.
Disons que nous avons une classe de base
public class Person{
public String FirstName{get;set;}
public String LastName{get;set;}
public String Email{get;set;}
}
- public class Person{
- public String FirstName{get;set;}
- public String LastName{get;set;}
- public String Email{get;set;}
- }
Maintenant, étant donné une méthode qui remplit une liste d'objets Person
var myList = new List<Person>();
for(int i = 0; i < 10; i++){
myList.Add(
//Excuse the concatination, prefered method is String.Format
new Person{FirstName = "Name [1]" + 1, LastName = "LastName " + [1], Email = "Email" + i + "@domain.com"};
)
}
- var myList = new List<Person>();
- for(int i = 0; i < 10; i++){
- myList.Add(
- //Excuse the concatination, prefered method is String.Format
- new Person{FirstName = "Name [1]" + 1, LastName = "LastName " + [1], Email = "Email" + i + "@domain.com"};
- )
- }
Maintenant, nous avons une liste de personne avec 10 entrées. Maintenant, si nous voulions trouver l'entrée avec le nom "Nom 1" de la première serait traditionnellement une boucle sur la liste jusqu'à ce que vous correspond le nom. Quelque chose comme
var myPerson = null;
foreach(var person in myList){
if(myList.FirstName.Equals("Name 1")){
myPerson = person;
break;
}
}
- var myPerson = null;
- foreach(var person in myList){
- if(myList.FirstName.Equals("Name 1")){
- myPerson = person;
- break;
- }
- }
L'homme qui peut parfois ennuyeux. Donc, MS nous a fourni un ensemble pratique de la méthode d'extension de la bibliothèque LINQ. Pour l'inclure dans votre cs fichier que vous avez simplement référence à l'espace de noms System.Linq
Maintenant, pour réaliser la même chose que la boucle foreach nous suffit d'aller
//The first or default method returns null if it doesn't find a match, First() will throw an exception if no
//matching objects are found
var myPerson = myList.FirstOrDefault(person => person.FirstName.Equals("Name 1"));
- //The first or default method returns null if it doesn't find a match, First() will throw an exception if no
- //matching objects are found
- var myPerson = myList.FirstOrDefault(person => person.FirstName.Equals("Name 1"));
Maintenant, c'est super!
Nous pouvons également des listes requête dans la liste
//Obviously this will return all ten results but illustrates the purpose
var myNewList = myList.Where(person => person.FirstName.StartsWith("Name "));
- //Obviously this will return all ten results but illustrates the purpose
- var myNewList = myList.Where(person => person.FirstName.StartsWith("Name "));
Cool hein? Mais ce n'est que le début! Dites nous ajoutons une autre propriété à la personne.
public class Person{
public String FirstName{get;set;}
public String LastName{get;set;}
public String Email{get;set;}
public int Salary {get;set;} //yes I know, float float float -> keeping it simple
}
- public class Person{
- public String FirstName{get;set;}
- public String LastName{get;set;}
- public String Email{get;set;}
- public int Salary {get;set;} //yes I know, float float float -> keeping it simple
- }
et nous le remplir avec
var myList = new List<Person>();
Random random = new Random();
int randomNumber = random.Next(0, 100);
for(int i = 0; i < 10; i++){
myList.Add(
//Excuse the concatination, prefered method is String.Format
var salary = random.Next() * 1;
new Person{FirstName = "Name [1]" + 1, LastName = "LastName " + [1], Email = "Email" + i + "@domain.com", Salary = salary};
)
}
- var myList = new List<Person>();
- Random random = new Random();
- int randomNumber = random.Next(0, 100);
- for(int i = 0; i < 10; i++){
- myList.Add(
- //Excuse the concatination, prefered method is String.Format
- var salary = random.Next() * 1;
- new Person{FirstName = "Name [1]" + 1, LastName = "LastName " + [1], Email = "Email" + i + "@domain.com", Salary = salary};
- )
- }
Et nous voulons trouver le coût total de notre Liste des personnes
var total = myList.Sum(person => person.Salary);
Ou nous voulons trouver la moyenne de tous les salaires
var avg = myList.Avg(person => person.Salary);
Maintenant, je ne m'inquiète pas qui vous êtes, qui est cool.It s'étend bien plus loin que cela si je recommande d'avoir un coup d'oeil!
Pour plus d'informations à vérifier
Les expressions lambda:
http://msdn.microsoft.com/en-us/library/bb397687.aspxLinq
http://msdn.microsoft.com/en-us/netframework/aa904594Amusez-vous!