jak odpytywać listę za pomocą linq

Załóżmy, że dodam instancję klasy person do listy i będę musiał odpytywać listę używając linq.

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

Teraz chcę odpytywać powyższą listę za pomocą linq. Proszę poprowadź mnie za pomocą przykładowego kodu.

Author: B--rian, 2011-05-31

4 answers

Sugerowałbym również LinqPad jako wygodny sposób radzenia sobie z Linq zarówno dla zaawansowanych, jak i początkujących.

Przykład:
Tutaj wpisz opis obrazka

 30
Author: Sorin Comanescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 07:30:33

Cóż, podany kod jest nieprawidłowy, aby rozpocząć od - List jest typem generycznym i ma metodę Add zamiast add itp.

Ale mógłbyś zrobić coś takiego:

List<Person> list = 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}
};

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

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

Jeśli chcesz dowiedzieć się więcej o tym, co robią wszystkie operatory LINQ i jak można je zaimplementować w LINQ to Objects, być może zainteresuje cię moja Seria blogów Edulinq.

 24
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-04 15:07:31
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
Author: tofutim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 06:53:09

Ponieważ nie podałeś żadnych wskazówek Czego chcesz, oto link do 101 próbek LINQ, które używają wszystkich różnych metod LINQ: 101 próbek LINQ

Należy również zmienić List Na silnie wpisaną listę (List<T>), odpowiednio zdefiniować T i dodać instancje T do listy. To naprawdę znacznie ułatwi zapytania, ponieważ nie będziesz musiał rzucać wszystkiego przez cały czas.

 8
Author: Øyvind Bråthen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-27 11:19:18