簡體   English   中英

C# - 列表中的項目之間的匹配<items>到列表中的 ItemsContainer<itemscontainer></itemscontainer></items>

[英]C# - Match between items in List<Items> to ItemsContainer in List<ItemsContainer>

我有一個項目列表和一個 ItemsContainer 列表,它是一個包含項目的 class。

  1. 所有的物品都是獨一無二的
  2. 每個項目最多位於一個ItemContainer
  3. 僅 ItemContainer 支持: Remove(Item)Contains(Item)方法

我想從所有 itemContainers 中刪除我列表中的所有項目。

現在我正在考慮做這樣的事情:

    List<ItemContainer> itemContainerList = ...
    List<Item> itemsList = ...

          
foreach (ItemContainer itemContainer in itemContainerList)
            {
                foreach (Item item in itemsList)
                {
                    if (itemContainer.Contains(item))
                    {
                        itemContainer.Remove(item);
                    }
                }
            }

希望讓這更高效、更優雅。

謝謝,阿維拉姆。

在公布更多信息之后,我發現這些限制意味着任何“常規有效”的方法都不適用。

根據您的限制,我只能建議翻轉循環:

foreach (Item item in itemsList)
{
    foreach (ItemContainer itemContainer in itemContainerList)
    {
        if (itemContainer.Contains(item))
        {
            itemContainer.Remove(item);
            break;
        }
    }
}

由於您的設置存在不幸的先前存在的問題,它仍然不理想,但由於只瀏覽這些項目一次,它會稍微快一些。

暫無
暫無

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

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