luk*_*uke 12
Linq是继续这个的方式.
List<List<String>> list = ....;
string[][] array = list.Select(l => l.ToArray()).ToArray();
Run Code Online (Sandbox Code Playgroud)
为了打破它,类型的工作方式如下:
List<List<String>> list = ....;
IEnumerable<String[]> temp = list.Select(l => l.ToArray());
String[][] array = temp.ToArray();
Run Code Online (Sandbox Code Playgroud)
现有答案的一个快速变体,它使用方法组转换而不是lambda表达式:
string[][] array = lists.Select(Enumerable.ToArray).ToArray();
Run Code Online (Sandbox Code Playgroud)
从理论上讲,它会稍微快一点,因为传递给代理的抽象层少了一层Select.
记住孩子:当你看到这种形式的lambda表达式时:
foo => foo.SomeMethod()
Run Code Online (Sandbox Code Playgroud)
考虑使用方法组转换.通常它不会更好,但有时它会:)
回到a List<List<string>>也很容易:
List<List<string>> lists = array.Select(Enumerable.ToList).ToList();
Run Code Online (Sandbox Code Playgroud)