LINQ一次更新多个元素是否可以使用LINQ为List中的每个元素设置属性。例如:varusers=fromuincontext.Userswhereu.Name=="George"selectu;foreach(在用户中使用我们){us.MyProp=false;是否有可能使它更清洁?或者您可以将其转换为ToList()并使用ForEach方法。users.ToList().ForEach(u=>u.MyProp=false);更新多个属性users.ToList().ForEach(u=>{u.property1=value1;u.property2=value2;});或像这样(从你在context.Userswhereu.Name=="George"selectu).ToList().ForEach(u=>u.MyProp=false);您可以创建自己的ForEach扩展方法:publicstaticIEnumerableForEach(thisIEnumerablesource,Actionaction){foreach(varelementinsource){action(element);}返回源;那么你的代码可以简化为:context.Users.Where(x=>x.Name=="George").ForEach(u=>u.MyProp=false);编辑:您还可以在调用action()后返回每个项目(没有双关语)以保持延迟执行完好无损。什么是清洁剂是非常主观的。就个人而言,我发现这种方法很难理解且简单:foreach(Userusinusers.Where(u=>u.Name=="George")){us.MyProp=false;更新很有趣,即数据库不会更新,那么您可以使用varusers=(fromuincontext.Userswhereu.Name=="George"selectu).ToList();users.ForEach(u=>u.MyProp="Something");怎么样:context.Users.Where(u=>u.Name=="George").Select(u=>u.MyProp=false);看起来很脏,但如果给出询问(仅通过选择),我会在context.Userswhereu.Name=="George"selectnewUser(){prop1=u.prop1,prop2=u.prop2,prop3=true//像这里一样更新};如果你想使用一些其他的C#函数,你也可以使用linq函数和处理IEnumerable类型的列表。varusers=context.Users.Where(u=>u.Name=="George").ToList().Select(p=>newUser(){prop1=p.prop1,prop2=p.prop2,prop3=ComputeHash(p)//像这里一样更新});由于.Select()之前有.ToList(),所以上面的代码变成了IEnumerable。以上就是C#学习教程:LINQ一次性更新多个元素共享的所有内容。很有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
