.ToArray没有这样做
答案 0 :(得分:12)
Linq是继续这个的方式。
List<List<String>> list = ....;
string[][] array = list.Select(l => l.ToArray()).ToArray();
将其分解得更多类似的工作:
List<List<String>> list = ....;
IEnumerable<String[]> temp = list.Select(l => l.ToArray());
String[][] array = temp.ToArray();
答案 1 :(得分:9)
现有答案的一个快速变体,它使用方法组转换而不是lambda表达式:
string[][] array = lists.Select(Enumerable.ToArray).ToArray();
理论上它会稍微快一些,因为传递给Select
的委托中只有一层抽象。
记住孩子:当你看到这种形式的lambda表达时:
foo => foo.SomeMethod()
考虑使用方法组转换。通常它不会更好,但有时它会:)
回到List<List<string>>
也很容易:
List<List<string>> lists = array.Select(Enumerable.ToList).ToList();
答案 2 :(得分:2)
List<List<string>> myStrings;
myStrings.Select(l => l.ToArray()).ToArray();
(LINQ摇滚)