正在从以下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());
}
}
您遇到了问题,因为您可能期望的是线性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());
这将创建一个新列表并将其添加到结果列表中。