我想將string[][]
轉換爲List<List<string>>
。將字符串的鋸齒陣列轉換爲C中字符串列表的列表#
例如。
List<List<string>> listOfListReturned = new List<List<string>>();
string[][] twoDArrOfString = new string[2][];
我想轉換twoDArrOfString
到listOfListReturned
請建議,該怎麼辦呢?
問候, 維韋克
我想將string[][]
轉換爲List<List<string>>
。將字符串的鋸齒陣列轉換爲C中字符串列表的列表#
例如。
List<List<string>> listOfListReturned = new List<List<string>>();
string[][] twoDArrOfString = new string[2][];
我想轉換twoDArrOfString
到listOfListReturned
請建議,該怎麼辦呢?
問候, 維韋克
像下面也將工作:
string[][] twoDArrOfString = new string[2][];
var res = twoDArrOfString
.Where(inner => inner != null) // Cope with uninitialised inner arrays.
.Select(inner => inner.ToList()) // Project each inner array to a List<string>
.ToList(); // Materialise the IEnumerable<List<string>> to List<List<string>>
你需要的,如果內部陣列尚未初始化處理空值。
如果你不打算列舉所有這些,你可能想放棄最後的ToList
,並簡單地與IEnumerable<List<string>>
作對,以避免解決所有內部列表,如果你不需要(利用延遲枚舉的執行)。
任何原因特別是你爲什麼要這麼做?
List<List<string>> listOfListReturned = new List<List<string>>();
string[][] twoDArrOfString = new string[2][];
twoDArrOfString[0] = new[] {"a", "b"};
twoDArrOfString[1] = new[] {"c", "d"};
foreach (var s in twoDArrOfString)
{
listOfListReturned.Add(new List<string>(s));
}
或者
var result = twoDArrOfString.ToList();
var listOfList = result.Select(x => x.ToList()).ToList();
未測試想像吧:)
for (int i = 0; i < twoDArrOfString.Length; i++)
{
for (int j = 0; j < twoDArrOfString[i].Length; j++)
{
listOfListReturned[i].Add(twoDArrOfString[j].ToString());
}
listOfListReturned.Add(listOfListReturned[i]);
}
更LINQ十歲上下的版本可能
List<List<string>> listOfListReturned = new List<List<string>>()
{
new List<string> {"A", "B"},
new List<string> {"C", "D"},
};
string[][] twoDArrOfString = new string[2][]
{
new [] {"A", "B"},
new []{"C", "D"},
};
var actual = twoDArrOfString.Select(arr => new List<string>(arr)).ToList();
for (var idx = 0; idx < listOfListReturned.Count; idx++) {
CollectionAssert.AreEqual(listOfListReturned[idx], actual[idx]);
}
編輯:上面的允許空行亞當的解決方案是更好的。
你不能只使用'toList()'? http://stackoverflow.com/questions/1603170/conversion-of-system-array-to-list – Dan
@丹那麼會給你一個'List',所以他不能只使用'ToList'。 –