簡體   English   中英

從列表中選擇某種類型的元素(C#)

[英]Select elements of certain type from list (c#)

我的主班有一份“陷阱”清單。 我想在子類“火焰”中從列表中刪除某些元素。 問題是,如何選擇這些元素? 陷阱確實具有其他具有不同屬性的子類別。

這是我到目前為止所得到的(簡化的代碼,來自“ 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM