【问题标题】:How to add an item to a List<List<T>>?如何将项目添加到 List<List<T>>?
【发布时间】:2016-01-18 17:51:40
【问题描述】:

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

我有一个坐标列表 (x,y) 和一个包含 X 和 Y 的对象 (Location);然后,我有一个函数可以检查每个相邻位置,并将它们与我的列表项(我转换为锯齿状数组)进行比较

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());
        }
    }

有什么帮助吗?

【问题讨论】:

  • list[1].Add,或者你想添加的任何列表。
  • 或创建一个“内部列表”实例,像往常一样填充它,然后将该内部列表添加到外部列表中。
  • 似乎map 应该是某种类型的字典,例如Dictionary&lt;Tuple&lt;int,int&gt;, PointWithID&gt;,或者如果您覆盖LocationEqualsGetHashCode,您可以使用Dictionary&lt;Location, PointWithID&gt;

标签: c# list multidimensional-array windows-phone-8.1


【解决方案1】:

好吧,假设您有一个List&lt;List&lt;PointWithID&gt;&gt;,它是一个列表列表,当您调用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));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多