ホーム > .NET, LINQを楽しむ > LINQ to Objectで抽出と並び替え(配列編)

LINQ to Objectで抽出と並び替え(配列編)

※この投稿はMicrosoft Visual Studio 2008 Beta2で動作を確認しています。

LINQ to ObjectはListだけを対象にしているわけではありません。
配列もその対象となります。 ということで、ソースコード。

using System;
using System.Linq;

namespace LINQ2
{
    class Program
    {
        static void Main(string[] args)
        {
            var People = new[]{
               new { Name="オサダ トシヒロ", Gender=1, Age=32},
               new { Name="カネフジ タカエ", Gender=2, Age=46},
               new { Name="キョウゴク トシツグ", Gender=1, Age=11},
               new { Name="コウダ キミタカ", Gender=1, Age=17},
               new { Name="シモイズミ エイコ", Gender=2, Age=13},
               new { Name="センザイ シュウイチロウ", Gender=1, Age=43},
               new { Name="ソウリョウ ノリカズ", Gender=1, Age=21},
               new { Name="マツバネ タツコ", Gender=2, Age=24},
               new { Name="ミツジマ タカコ", Gender=2, Age=32},
               new { Name="ヤハタ トシチカ", Gender=1, Age=28}
            };

            var query = from p in People
                        where p.Gender == 1 && p.Age >= 20
                        orderby p.Age
                        select p;

            foreach (var item in query)
            {
                Console.WriteLine("名前={0}, 年齢={1}", item.Name, item.Age);
            }

            Console.Read();
        }
    }
}

なんかデータ作ってるところがすっきりして見えるのは、気のせいではなく、匿名クラスを使っているからです。
まぁ、サンプルだから使える手法ですかね。

LINQの部分はデータがListのときとまったく同じです。
当然、拡張メソッドによる実装も同じく使えます。

            var query = People.Where(p => p.Gender == 1 && p.Age >= 20).OrderBy(p => p.Age);

実行結果も同じになります。

image

カテゴリー:.NET, LINQを楽しむ
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す