※この投稿は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();
}
}
}
このプログラムの実行結果は次のようになります。

ここで生成されるSQL文のINに渡されるパラメータの数はContainsに渡した配列の数によって自動的に変更されます。
あるデータの抽出結果に基づいて他のデータを取り出す場合等に使えそうですね。