从列表中选择特定类型的元素(c#)
本文关键字:元素 类型 列表 选择 | 更新日期: 2023-09-27 18:19:40
我的主类中有一个"陷阱"列表。在子类"火焰"中,我想从该列表中删除某些元素。问题是,我如何选择这些元素?Trap确实有其他具有不同属性的子层。
这就是我到目前为止得到的(代码简化,来自"Flame.cs"):
public override Boolean collide()
{
var flames = form1.traps.Where(trap => trap.ID == ID);
foreach (Flame f in flames)
{
if (f.pos > pos)
{
form1.traps.Remove(f);
}
}
return true;
}
我觉得我应该知道这一点,但atm我被卡住了:/
您可以使用OfType
扩展方法。
public override Boolean collide()
{
var flames = form1.traps.Where(trap => trap.ID == ID)
.OfType<Flame>()
.Where(f => f.pos > pos)
.ToList();
foreach (Flame flame in flames)
{
form1.traps.Remove(flame);
}
return true;
}
如果我正确理解你,
form1.traps = form1.traps.OfType<Flame>()
.Where(trap => trap.ID == ID && trap.pos <= pos)
.ToList();