2

这是我的代码,

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

我想要做的是更新所有Nameage=20

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

但是.SingleOrDefault()只能返回一个值,我想全部用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() 只能返回一个值,我想用 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 回答