正在从以下c#函数获取字符串值的列表:

本文关键字:字符串 列表 获取 函数 | 更新日期: 2023-09-27 18:00:56

我一直在努力解决这个问题,但一直没有奏效:

我从http://fir3pho3nixx.blogspot.com/2011/01/recursion-cross-product-of-multiple.html其中它返回一个列表,但我似乎无法读取列表中每个对象中的值。

以下是有问题的函数:

    private static List<object> GetCrossProduct(object[][] arrays)
    {
        var results = new List<object>();
        GetCrossProduct(results, arrays, 0, new object[arrays.Length]);
        return results;
    }
    private static void GetCrossProduct(ICollection<object> results, object[][] arrays, int depth, object[] current)
    {
        for (var i = 0; i < arrays[depth].Length; i++)
        {
            current[depth] = arrays[depth][i];
            if (depth < arrays.Length - 1)
                GetCrossProduct(results, arrays, depth + 1, current);
            else
                results.Add(current.ToList());
        }
    }

正在从以下c#函数获取字符串值的列表:

您遇到了问题,因为您可能期望的是线性List,而实际上它是List s的List

要访问结果中的元素,您需要执行以下操作:

var resultingList = GetCrossProduct(blargh); // where blargh is the array you passed in
foreach (IList<object> innerList in resultingList)
{
    foreach (var listValue in innerList)
    {
        // listValues should be the individual strings, do whatever with them
        // e.g.
        Console.Out.WriteLine(listValue);
    }
}

原因是因为这条线:

results.Add(current.ToList());

这将创建一个新列表并将其添加到结果列表中。