【发布时间】:2019-07-22 09:10:46
【问题描述】:
我有两个集合,都包含对象。
第一个是IList,第二个是Dictionary。
我需要遍历IList,如果条件满足,则从存储在Dictionary中的某个对象激活方法。
目前的情况是这样的:
foreach (MyObject mo in MyListOfObjects)
{
if (mo.Active == myStatus.Enabled)
{
DictList[mo.ID].Start();
}
}
到目前为止,我已经这样做了:
var r = MyListOfObjects.Where(mo => mo.Active == myStatus.Enabled);
但我不知道如何包含在这个DictList[mo.ID].Start();
【问题讨论】:
-
你为什么要这个?在这里使用 Linq 绝对没有任何好处。只是另一种语法。除此之外,Linq 中的 Q 代表 querying,而不是 modifying 或您想要在
Start中执行的任何操作。 -
如果您真的认为这更具可读性,您可以删除循环内的显式测试。没有有效增益 foreach(MyObject mo in MyListOfObjects.Where(o => o.Active == myStatus.Enabled)) DictList[mo.ID].Start();
-
need to traverse... 存储在字典中如果你遍历字典,为什么它在字典中?
-
如果您包含
Select(mo => DeictList[mo.ID]),那么您可以循环该结果并调用您的方法foreach(var x in r) x.Start();。