web-dev-qa-db-fra.com

comment interroger la LISTE à l'aide de linq

supposons que si j'ajoute une instance de classe personne à la liste, puis j'ai besoin d'interroger la liste à l'aide de linq.

List lst=new List();
lst.add(new person{ID=1,Name="jhon",salaty=2500});
lst.add(new person{ID=2,Name="Sena",salaty=1500});
lst.add(new person{ID=3,Name="Max",salaty=5500});
lst.add(new person{ID=4,Name="Gen",salaty=3500});

maintenant je veux interroger la liste ci-dessus avec linq. veuillez me guider avec un exemple de code.

18
Mou

Je suggérerais également LinqPad comme un moyen pratique de s'attaquer à Linq pour les débutants et les avancés.

Exemple:
enter image description here

29
Sorin Comanescu

Eh bien, le code que vous avez donné n'est pas valide pour commencer - List est un type générique, et il a une méthode Add au lieu de add etc.

Mais vous pourriez faire quelque chose comme:

List<Person> list = new List<Person>
{
    new person{ID=1,Name="jhon",salaty=2500},
    new person{ID=2,Name="Sena",salaty=1500},
    new person{ID=3,Name="Max",salaty=5500}.
    new person{ID=4,Name="Gen",salaty=3500}
};

// The "Where" LINQ operator filters a sequence
var highEarners = list.Where(p => p.salaty > 3000);

foreach (var person in highEarners)
{
    Console.WriteLine(person.Name);
}

Si vous souhaitez en savoir plus sur ce que font tous les opérateurs LINQ et comment les implémenter dans LINQ to Objects, vous pourriez être intéressé par mon série de blogs Edulinq .

20
Jon Skeet
var persons = new List<Person>
    {
        new Person {ID = 1, Name = "jhon", Salary = 2500},
        new Person {ID = 2, Name = "Sena", Salary = 1500},
        new Person {ID = 3, Name = "Max", Salary = 5500},
        new Person {ID = 4, Name = "Gen", Salary = 3500}
    };

var acertainperson = persons.Where(p => p.Name == "jhon").First();
Console.WriteLine("{0}: {1} points",
    acertainperson.Name, acertainperson.Salary);

jhon: 2500 points

var doingprettywell = persons.Where(p => p.Salary > 2000);
            foreach (var person in doingprettywell)
            {
                Console.WriteLine("{0}: {1} points",
                    person.Name, person.Salary);
            }

jhon: 2500 points
Max: 5500 points
Gen: 3500 points

        var astupidcalc = from p in persons
                          where p.ID > 2
                          select new
                                     {
                                         Name = p.Name,
                                         Bobos = p.Salary*p.ID,
                                         Bobotype = "bobos"
                                     };
        foreach (var person in astupidcalc)
        {
            Console.WriteLine("{0}: {1} {2}",
                person.Name, person.Bobos, person.Bobotype);
        }

Max: 16500 bobos
Gen: 14000 bobos
8
tofutim

Puisque vous n'avez donné aucune indication sur ce que vous voulez, voici un lien vers 101 exemples LINQ qui utilisent toutes les différentes méthodes LINQ: 101 échantillons LINQ

De plus, vous devez vraiment vraiment vraiment changer votre List en une liste de types fortement (List<T>), définissez correctement T et ajoutez des instances de T à votre liste. Cela rendra les requêtes beaucoup plus faciles car vous n'avez pas besoin de tout diffuser tout le temps.

7
Øyvind Bråthen