Tôi có danh sách các Guid củaLàm thế nào để sao chép Danh sách để Mảng
List<Guid> MyList;
tôi cần phải sao chép nội dung của nó để Mảng
Guid[]
hãy giới thiệu cho tôi một giải pháp khá
Tôi có danh sách các Guid củaLàm thế nào để sao chép Danh sách để Mảng
List<Guid> MyList;
tôi cần phải sao chép nội dung của nó để Mảng
Guid[]
hãy giới thiệu cho tôi một giải pháp khá
Như Luke nói trong nhận xét, loại List<T>
cụ thể đã có phương thức ToArray()
. Nhưng nếu bạn đang sử dụng C# 3.0, bạn có thể tận dụng các phương pháp ToArray()
phần mở rộng trên bất kỳ IEnumerable
dụ (trong đó bao gồm IList
, IList<T>
, bộ sưu tập, các mảng khác, vv)
var myList = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array = myList.ToArray(); // instance method
IList<Guid> myList2 = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array2 = myList2.ToArray(); // extension method
var myList3 = new Collection<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array3 = myList3.ToArray(); // extension method
Về câu hỏi thứ hai của bạn:
Bạn có thể sử dụng phương pháp Select
để thực hiện các dự báo cần thiết:
var list = new List<MyClass> {new MyClass(), new MyClass()};
Guid[] array = list.Select(mc => mc.value).ToArray();
Muchas gracias. –
'Danh sách
@Luke: Điểm rất tốt! Tôi đã cập nhật câu trả lời của mình cho phù hợp. Cảm ơn. –
Bạn chỉ cần phải gọi MyList.ToArray() để có được một mảng của các yếu tố.
Sử dụng Enumerable.ToArray() Extension Method bạn có thể làm:
var guidArray = MyList.ToArray();
Nếu bạn vẫn đang sử dụng C# 2.0, bạn có thể sử dụng phương pháp List.ToArray. Cú pháp giống nhau (ngoại trừ không có từ khóa var
trong C# 2.0).
Cách mới (sử dụng phần mở rộng hoặc phương pháp ToArray() trên danh sách chung trong Net 2.0):
Guid[] guidArray = MyList.ToArray();
Cách cũ:
Guid[] guidArray = new guidArray[MyList.Length];
int idx = 0;
foreach (var guid in MyList)
{
guidArray[idx++] = guid;
}
C# 2.0 có 'List.ToArray', sử dụng' System.Array.Copy' –
Tôi đoán tôi đang hiển thị tuổi của mình. :-) – tvanfosson
Tuy nhiên, một tùy chọn, ngoài việc Guid[] MyArray = MyList.ToArray()
:
Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from
MyList.CopyTo(MyArray, 0);
Giải pháp này có thể tốt hơn nếu vì lý do nào đó, bạn đã có kích thước mảng và chỉ đơn giản là muốn cư nó (thay vì xây dựng một cái mới, như List<T>.ToArray()
hiện).
Một câu hỏi khác, MyClass { Giá trị hướng dẫn; } Danh sách Làm thế nào để sao chép thuộc tính Guid vào mảng của Guid? Tôi có nghĩa là không sử dụng câu lệnh lặp –
Tôi không phải là 100% đối với nghi thức SO, nhưng tốt nhất nên đặt câu hỏi mới làm câu hỏi mới. Tôi có thể sai. –