请教个查询赋值问题。求大神啊~~~

睡神在睡觉 2016-03-08 08:31:28
public class P
{
public long Id{get;set;}
public string Name{get;set;}
public bool IsOpen{get;set;}
}

List<P> AllP=new List<P>(){……};//P对象的全部列表
List<P> OpenP=new List<P>(){……};//P对象的打开列表

想实现的功能:
修改AllP中的IsOpen值,如果AllP的Id在OpenP的列表中出现了,则将AllP中的IsOpen修改为true,否则修改为false

不知道用linq是不是可以实现???
...全文
1211 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoulRed 2016-08-01
循环遍历判断即可,没什么难度的
回复
yespie 2016-03-09
2楼正解!!
回复
Justin-Liu 2016-03-09
引用 3 楼 qbilbo 的回复:
这里有一个问题,P是引用类型,一般来说AllP中的元素和OpenP中的元素如果Id相同,都是指向同一个对象才对,不会用到这种操作。
是的,同一个对象
回复
qbilbo 2016-03-08
这里有一个问题,P是引用类型,一般来说AllP中的元素和OpenP中的元素如果Id相同,都是指向同一个对象才对,不会用到这种操作。
回复
qbilbo 2016-03-08
AllP.ForEach((x) => { if (OpenP.Any((y) => y.Id == x.Id)) x.IsOpen = true; });
回复
这个不就是个foreach的事情么?没事要linq干嘛,当然部分代码可以用linq foreach(var p in allp) { p.IsOpen=openp.Any(i=>i.Id==p.Id); }
回复
发动态
发帖子
LINQ
创建于2007-12-13

8490

社区成员

.NET技术 LINQ
申请成为版主
社区公告
暂无公告