我有两个集合,两个集合都包含对象。
第一个是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();
答案 0 :(得分:1)
不能很好地使用linq,但是您可以使用linq过滤列表,然后遍历列表。
var itemsToStart = MyListOfObjects.Where(mo => mo.Active == myStatus.Enabled)
.Select(mo=> DictList[mo]); //or ToList() if you intend to re-iterate
foreach (var itemToStart in itemsToStart) {
itemToStart.Start();
}
答案 1 :(得分:0)
如果有什么需要,只需移除内部的if
foreach (MyObject mo in MyListOfObjects.Where(x => x.Active == myStatis.Enabled))
{
DictList[mo.ID].Start();
}
但这就是所有您应该做的-它完全可读且可维护。
答案 2 :(得分:-2)
MyListOfObjects.Where(mo => mo.Active == myStatus.Enabled).ToList().ForEach(mo => DictList[mo.ID].Start());
找到