在linq中选择all by where子句

时间:2013-04-23 05:44:29

标签: c# linq where

这是我的代码,

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

我想要做的是使用Name

更新所有age=20
 obj.Name = " Mr " + obj.Name ;
 DB.SubmitChanges();

但是.SingleOrDefault()只能返回一个值,我想用age=20获取所有值。

5 个答案:

答案 0 :(得分:5)

Where()已经返回所有匹配的项目。您无需添加任何其他内容。试试这个:

foreach(var item in DB.Names.Where(x => x.age == 20 ))
{
   item.Name = " Mr " + item.Name;
}

答案 1 :(得分:4)

DB.Names.Where(x => x.age == 20 )会返回IEnumerable<Name>,您可以使用foreach进行迭代以修改每个条目。

答案 2 :(得分:1)

为什么使用SingleOrDefault?试试这个:

var result = DB.Names.Where(x => x.age == 20).ToList()

答案 3 :(得分:1)

Where将返回列表匹配条件

List<Name> nameList = DB.Names.Where(x => x.age == 20);
foreach(var name in nameList )
{
    name.Name = " Mr " + name.Name ;
}
DB.SubmitChanges();

答案 4 :(得分:0)

  

但是.SingleOrDefault()只返回一个值,我想得到所有   年龄= 20岁。

是的,因此删除SingleOrDefault()您将获得与条件匹配的所有记录 此外,您还可以尝试使用Foreach更新从初始名称中过滤的每个项目。

尝试以下代码:

DB.Names.Where(x => x.age == 20 ).ToList().ForEach(n=>n.Name = " Mr " + n.Name);