什么是转换List <list <string>&gt;的快速方法? to string [] []?</list <string>

时间:2010-07-01 22:40:12

标签: c# list arrays

.ToArray没有这样做

3 个答案:

答案 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摇滚)