HoloXPLOR.Models.HoloTable.DetailModel._GetAttachedItems C# (CSharp) Méthode

_GetAttachedItems() private méthode

private _GetAttachedItems ( InventoryItem item ) : IEnumerable
item InventoryItem
Résultat IEnumerable
        private IEnumerable<InventoryItem> _GetAttachedItems(InventoryItem item)
        {
            yield return item;

            if (item.GameData_Item != null && item.GameData_Item.Ports != null)
            {
                var children = (from gamePort in item.GameData_Item.Ports.Items
                                where item.Inventory_Item.Ports.Items != null
                                from shipPort in item.Inventory_Item.Ports.Items
                                where shipPort.PortName == gamePort.Name

                                let shipItem = this.Inventory_ItemMap.GetValue(shipPort.ItemID, null)
                                let gameItem = this.GameData_ItemMap.GetValue(shipPort.ItemID, null)

                                select new InventoryItem
                                {
                                    // Top level parent item
                                    Inventory_EquippedItem = item.Inventory_Item,
                                    GameData_EquippedItem = item.GameData_Item,
                                    // Top level parent port
                                    Inventory_EquippedPort = shipPort,
                                    GameData_EquippedPort = gamePort,
                                    // Parent ship
                                    Inventory_Ship = item.Inventory_Ship,
                                    GameData_Ship = item.GameData_Ship,
                                    // Child item
                                    Inventory_Item = shipItem,
                                    GameData_Item = gameItem,
                                });

                foreach (var childItem in children.SelectMany(c => this._GetAttachedItems(c)))
                    yield return childItem;
            }
        }