问题描述
publicclassP{publiclongId{get;set;}publicstringName{get;set;}publicboolIsOpen{get;set;}}List<P>AllP=newList<P>(){……};//P对象的全部列表List<P>OpenP=newList<P>(){……};//P对象的打开列表想实现的功能:修改AllP中的IsOpen值,如果AllP的Id在OpenP的列表中出现了,则将AllP中的IsOpen修改为true,否则修改为false不知道用linq是不是可以实现???
解决方案
解决方案二:
这个不就是个foreach的事情么?没事要linq干嘛,当然部分代码可以用linqforeach(varpinallp){p.IsOpen=openp.Any(i=>i.Id==p.Id);}
解决方案三:
AllP.ForEach((x)=>{if(OpenP.Any((y)=>y.Id==x.Id))x.IsOpen=true;});
解决方案四:
这里有一个问题,P是引用类型,一般来说AllP中的元素和OpenP中的元素如果Id相同,都是指向同一个对象才对,不会用到这种操作。
解决方案五:
引用3楼qbilbo的回复:
这里有一个问题,P是引用类型,一般来说AllP中的元素和OpenP中的元素如果Id相同,都是指向同一个对象才对,不会用到这种操作。
是的,同一个对象
解决方案六:
2楼正解!!
时间: 2024-10-30 10:22:06