ホーム > .NET, LINQを楽しむ > LINQ to SQL:値を複数特定してデータを抽出する

LINQ to SQL:値を複数特定してデータを抽出する

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

データの更新の話をする前にちょっと寄り道です。
データを抽出する場合に、たとえばIDが1、3、4、8の人だけを抽出する、といった感じで値を複数特定し、そのデータだけを抽出したいという場合があります。SQL文でいうとINを利用したい場合、といったほうがわかりやすいかもしれません。
こういった場合に配列やListのContainsメソッドをwhereの条件として記述することができます。

using System;
using System.Linq;
using System.Data.Linq.SqlClient;
using System.Collections.Generic;

namespace LINQ4
{
    class Program
    {
        static void Main(string[] args)
        {
            LINQTESTDataContext dtc = new LINQTESTDataContext();
            dtc.Log = Console.Out;

            int[] NoList = new [] { 1,  3, 4, 8};
            var query = from p in dtc.People
                        where NoList.Contains(p.id)
                        select p;

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

            Console.Read();
        }
    }
}

このプログラムの実行結果は次のようになります。

image

ここで生成されるSQL文のINに渡されるパラメータの数はContainsに渡した配列の数によって自動的に変更されます。

あるデータの抽出結果に基づいて他のデータを取り出す場合等に使えそうですね。

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

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。