我有两个集合,都包含对象。
第一个是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进行过滤列表,然后循环循环。
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();
}
如果有的话,只需删除内部if
foreach (MyObject mo in MyListOfObjects.Where(x => x.Active == myStatis.Enabled))
{
DictList[mo.ID].Start();
}
但这是 all 您应该这样做 - 它是完全可读且可维护的。
MyListOfObjects.Where(mo => mo.Active == myStatus.Enabled).ToList().ForEach(mo => DictList[mo.ID].Start());
ForEach
找到:https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.generic.list-1.foreach?view=netframeworkwit = netframework-4.7.7.2