Один быстрый вариант существующих ответов, в котором используется преобразование группы методов вместо лямбда-выражения:
string[][] array = lists.Select(Enumerable.ToArray).ToArray();
Теоретически это будет немного быстрее, так как на один уровень меньше абстракция в делегате передана в Select
.
Помните, дети: когда вы видите лямбда-выражение такой формы:
foo => foo.SomeMethod()
подумайте об использовании преобразования группы методов. Часто это не будет лучше, но иногда будет :)
Вернуться к List
тоже легко: >
List<List<string>> lists = array.Select(Enumerable.ToList).ToList();
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();
List<List<string>> myStrings;
myStrings.Select(l => l.ToArray()).ToArray();
(LINQ rock)