У меня есть список Guid-хКак скопировать список в массив
List<Guid> MyList;
Мне нужно скопировать его содержимое в массив
Guid[]
Пожалуйста, порекомендуйте мне довольно решение
У меня есть список Guid-хКак скопировать список в массив
List<Guid> MyList;
Мне нужно скопировать его содержимое в массив
Guid[]
Пожалуйста, порекомендуйте мне довольно решение
Как Luke сказал в комментарии, тип List<T>
уже имеет метод ToArray()
. Но если вы используете C# 3.0, вы можете использовать метод ToArray()
расширения на любом IEnumerable
случае (который включает в себя IList
, IList<T>
, коллекции, другие массивы и т.д.)
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
Что касается Вашего второго вопроса:
Вы можете использовать метод Select
для выполнения необходимой проекции:
var list = new List<MyClass> {new MyClass(), new MyClass()};
Guid[] array = list.Select(mc => mc.value).ToArray();
Muchas gracias. –
'List
@ Luke: Очень хорошая точка! Я обновил свой ответ соответственно. Благодарю. –
Вы должны просто позвонить MyList.ToArray(), чтобы получить массив элементов.
Использование Enumerable.ToArray() Extension Method вы можете сделать:
var guidArray = MyList.ToArray();
Если вы все еще используете C# 2.0 вы можете использовать метод List.ToArray. Синтаксис один и тот же (кроме ключевого слова var
в C# 2.0).
Новый способ (с помощью расширения или метода ToArray() в общих списках в .Net 2.0):
Guid[] guidArray = MyList.ToArray();
старый путь:
Guid[] guidArray = new guidArray[MyList.Length];
int idx = 0;
foreach (var guid in MyList)
{
guidArray[idx++] = guid;
}
C# 2.0 имеет 'List.ToArray', который использует' System.Array.Copy' –
Я думаю, я показываю свой возраст. :-) – tvanfosson
Еще один вариант, в дополнение к Guid[] MyArray = MyList.ToArray()
:
Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from
MyList.CopyTo(MyArray, 0);
Это решение могло бы быть лучше, если по какой-либо причине у вас уже есть контингента должным образом и просто хотите заполнить его (а не построить новый, как это делает List<T>.ToArray()
).
Другой вопрос, MyClass { Значение руководства; } Как скопировать свойство Guid в массив Guid's? Я имею в виду не использовать утверждение итерации –
Я не 100% на этикете, но лучше было бы задать новый вопрос в качестве нового вопроса. Я могу ошибаться. –