web-dev-qa-db-ja.com

linqを使用してLISTをクエリする方法

リストに人物クラスのインスタンスを追加し、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});

今、私はlinqで上記のリストを照会したいです。サンプルコードを教えてください。

18
Mou

LinqPad は、上級者と初心者の両方のLinqに取り組む便利な方法としてもお勧めします。

例:
enter image description here

29
Sorin Comanescu

さて、あなたが与えたコードは最初から無効です-Listはジェネリック型であり、Addなどの代わりにaddメソッドを持っています.

しかし、次のようなことができます:

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);
}

すべてのLINQ演算子が何を行うか、およびLINQ to Objectsでそれらをどのように実装できるかについて詳しく知りたい場合は、私の 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

希望するwhatを指定していないため、すべての異なるLINQメソッドを使用する101個のLINQサンプルへのリンクを次に示します。 101 LINQサンプル

また、本当に本当にListを厳密に型のリスト(List<T>)、Tを適切に定義し、Tのインスタンスをリストに追加します。常にすべてをキャストする必要がないため、クエリが本当に簡単になります。

7