2

これが私のコードです、

 Name obj = new Name();
 obj = DB.Names.Where(x => x.age == 20 ).SingleOrDefault();

私がやりたいことは、すべてを で更新することNameですage=20

 obj.Name = " Mr " + obj.Name ;
 DB.SubmitChanges();

しかし.SingleOrDefault()、1つの値しか返せないので、 ですべて取得したいage=20

4

5 に答える 5

6

Where()すでに一致するすべてのアイテムを返します。他に何も追加する必要はありません。これを試して:

foreach(var item in DB.Names.Where(x => x.age == 20 ))
{
   item.Name = " Mr " + item.Name;
}
于 2013-04-23T05:48:30.653 に答える
4

DB.Names.Where(x => x.age == 20 )各エントリを変更するためにIEnumerable<Name>繰り返し使用できる を返します。foreach

于 2013-04-23T05:46:52.857 に答える
1

なぜあなたは使用していSingleOrDefaultますか?これを試して:

var result = DB.Names.Where(x => x.age == 20).ToList()
于 2013-04-23T05:45:35.560 に答える
1

Whereリストの一致条件を返します

List<Name> nameList = DB.Names.Where(x => x.age == 20);
foreach(var name in nameList )
{
    name.Name = " Mr " + name.Name ;
}
DB.SubmitChanges();
于 2013-04-23T05:48:45.800 に答える
0

しかし、 .SingleOrDefault() は 1 つの値しか返すことができません。 age=20 ですべてを取得したいと思います。

はい、削除SingleOrDefault()すると、条件に一致するすべてのレコードが取得Foreachされます。また、最初の名前からフィルタリングしたすべてのアイテムを更新するために使用することもできます。

以下のコードを試してください:

DB.Names.Where(x => x.age == 20 ).ToList().ForEach(n=>n.Name = " Mr " + n.Name);
于 2013-04-23T05:52:50.853 に答える