這裏是我的代碼全部選擇,通過其中LINQ條款
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
得到所有。
這裏是我的代碼全部選擇,通過其中LINQ條款
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
得到所有。
Where()
已經返回所有匹配項目。您不需要添加任何其他內容。試試這個:
foreach(var item in DB.Names.Where(x => x.age == 20))
{
item.Name = " Mr " + item.Name;
}
爲什麼你使用SingleOrDefault
?試試這個:
var result = DB.Names.Where(x => x.age == 20).ToList()
DB.Names.Where(x => x.age == 20)
返回IEnumerable<Name>
,你可以遍歷與foreach
修改每個條目。
Where
將返回列表匹配條件
List<Name> nameList = DB.Names.Where(x => x.age == 20);
foreach(var name in nameList)
{
name.Name = " Mr " + name.Name ;
}
DB.SubmitChanges();
但.SingleOrDefault()只能返回一個值,我想所有 隨着年齡= 20。
是的,所以刪除SingleOrDefault()
你會得到所有記錄匹配的條件 ,你也可以再嘗試使用Foreach
更新您從最初的名字過濾每一個項目。
嘗試下面的代碼:
DB.Names.Where(x => x.age == 20).ToList().ForEach(n=>n.Name = " Mr " + n.Name);
+1不同的解決方案。 – 2013-04-23 05:54:30
@HosseinNarimaniRad不幸的是,它不編譯,因爲IEnumerable
@JLRishe謝謝 – 2013-04-23 06:11:44
+1 :),非常感謝! – zey 2013-04-23 06:03:33
當然,僅僅因爲他/她假設你不能實現'foreach'循環而給予@JLRishe接受的答案。 ;) – dahlbyk 2013-04-23 06:08:36
:),但它更完美? – zey 2013-04-23 06:17:48