从列表中的某些类型的选择元件(C#)(Select elements of certain type

2019-11-02 05:48发布

我在我的主类“陷阱”的列表。 在子类中“火焰”我想删除从该列表中的某些元素。 问题是,我该如何选择这些元素呢? 陷阱确实有其他sublasses具有不同的属性。

这是我走到这一步(代码简化,从“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我卡:/

Answer 1:

您可以使用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;
}


Answer 2:

如果我理解正确

form1.traps = form1.traps.OfType<Flame>()
             .Where(trap => trap.ID == ID && trap.pos <= pos)
             .ToList();


文章来源: Select elements of certain type from list (c#)
标签: c# list oop