如何将项目添加到列表<列表>

本文关键字:列表 添加 项目 | 更新日期: 2023-09-27 18:31:02

我认为这是正确的问题/方法:

我有一个坐标列表(x,y)和一个具有X和Y的对象(位置); 然后,我有一个功能,可以检查每个相邻位置,并将它们与我的列表项(我将其转换为交错数组)进行比较

static List<Location> GetWalkableAdjacentSquares(int x, int y, PointWithID [][]Map, Location target)
    {
        var proposedLocations = new List<Location>()
        {
            new Location { X = x, Y = y - 1 },
            new Location { X = x, Y = y + 1 },
            new Location { X = x - 1, Y = y },
            new Location { X = x + 1, Y = y },
        };
        return proposedLocations.Where(l => Map[l.X][l.Y].value == 0).ToList();
    }

(0 表示它是开放路径)

现在,我的列表是一个简单的列表,因此,我有一个错误:

public static List<PointWithID> map = new List<PointWithID>();

所以我需要以这种方式列出(我猜):

public static List<List<PointWithID>> map = new List<List<PointWithID>>();

我的问题是:

如何以这种方式将项目添加到列表中?

当然,常规方式不起作用:

private void addItemsToMap()
    {
        try
        {
            foreach (PointWithID open in NewMapToShow.openPath)
            {
                map.Add(open);
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.ToString());
        }
    }

有什么帮助吗?

如何将项目添加到列表<列表<T>>

好吧,假设您有一个列表列表List<List<PointWithID>>,当您调用 Add() 方法时,您应该添加列表所需的泛型类型。因此,应在Add方法中添加一个新列表。另一方面,内部列表应添加PointWithID的对象。

我不确定您要做什么,但是请参阅下面的代码:

private void addItemsToMap()
{
    foreach (PointWithID open in NewMapToShow.openPath)
        map.Add(new List<PointWithID> { open });    // create a new list for each point
}

private void addItemsToMap()
{
    // add all points in the main list as a new item (a list)
    map.Add(new List<PointWithID>(NewMapToShow.openPath));
}