如何将List复制到数组

我有Guid的名单

List MyList; 

我需要将其内容复制到Array

 Guid[] 

请推荐一个漂亮的解决方案

正如Luke在评论中所说,特定的List类型已经有了ToArray()方法。 但是,如果您使用的是C#3.0,则可以在任何IEnumerable实例(包括IListIList ,集合,其他数组等)上利用ToArray()扩展方法。

 var myList = new List {Guid.NewGuid(), Guid.NewGuid()}; Guid[] array = myList.ToArray(); // instance method IList myList2 = new List {Guid.NewGuid(), Guid.NewGuid()}; Guid[] array2 = myList2.ToArray(); // extension method var myList3 = new Collection {Guid.NewGuid(), Guid.NewGuid()}; Guid[] array3 = myList3.ToArray(); // extension method 

关于你的第二个问题:

您可以使用Select方法执行所需的投影:

 var list = new List {new MyClass(), new MyClass()}; Guid[] array = list.Select(mc => mc.value).ToArray(); 

你应该只需要调用MyList.ToArray()来获取元素的数组。

新方法(在.Net 2.0中使用通用列表上的扩展或ToArray()方法):

 Guid[] guidArray = MyList.ToArray(); 

旧方式:

 Guid[] guidArray = new guidArray[MyList.Length]; int idx = 0; foreach (var guid in MyList) { guidArray[idx++] = guid; } 

另一个选项,除了Guid[] MyArray = MyList.ToArray()

 Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from MyList.CopyTo(MyArray, 0); 

如果由于某种原因,您已经拥有一个大小合适的数组并且只想填充它(而不是构造一个新的,如List.ToArray()那么),那么这个解决方案可能会更好。

使用Enumerable.ToArray()扩展方法,您可以:

 var guidArray = MyList.ToArray(); 

如果您仍在使用C#2.0,则可以使用List.ToArray方法。 语法是相同的(除了C#2.0中没有var关键字)。