컬렉션에서 목록으로 가장 빠르게 변환
피하고 싶은 것 :
ManagementClass m = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection managementObjects = m.GetInstances();
List<ManagementObject> managementList = new List<ManagementObject>();
foreach(ManagementObject m in managementObjects){
managementList.Add(m);
}
해당 컬렉션을 다음과 같은 List로 가져올 수있는 방법이 있습니까?
List<ManagementObject> managementList = new List<ManagementObjec>(collection_array);
어떤 버전의 프레임 워크? 3.5에서는 아마도 다음을 사용할 수 있습니다.
List<ManagementObject> managementList = managementObjects.Cast<ManagementObject>().ToList();
(간단한 버전을 제거하기 위해 편집 됨; 나는 확인하고 ManagementObjectCollection
비 제네릭 IEnumerable
양식 만 구현합니다 )
당신은 사용할 수 있습니다
using System.Linq;
그러면 ICollection <>에 대한 ToList <> 확장 메서드가 제공됩니다.
managementObjects.Cast<ManagementBaseObject>().ToList();
좋은 선택입니다.
목록 용량을 미리 초기화하여 성능을 향상시킬 수 있습니다.
public static class Helpers
{
public static List<T> CollectionToList<T>(this System.Collections.ICollection other)
{
var output = new List<T>(other.Count);
output.AddRange(other.Cast<T>());
return output;
}
}
시도해 볼 수 있습니다.
List<ManagementObject> managementList = new List<ManagementObject>(managementObjects.ToArray());
컬렉션에 .ToArray ()를 사용할 수 있는지 확실하지 않습니다. 게시 한 코드를 사용하는 경우 기존 요소 수로 목록을 초기화해야합니다.
List<ManagementObject> managementList = new List<ManagementObject>(managementObjects.Count); // or .Length
ManagementObjectCollection이 IEnumerable <ManagementObject>를 구현하는 한 다음을 수행 할 수 있습니다.
List<ManagementObject> managementList = new List<ManagementObjec>(managementObjects);
If it doesn't, then you are stuck doing it the way that you are doing it.
Since 3.5, anything inherited from System.Collection.IEnumerable has the convenient extension method OfType available.
If your collection is from ICollection or IEnumerable, you can just do this:
List<ManagementObject> managementList = ManagementObjectCollection.OfType<ManagementObject>().ToList();
Can't find any way simpler. : )
you can convert like below code snippet
Collection<A> obj=new Collection<return ListRetunAPI()>
참고URL : https://stackoverflow.com/questions/187913/fastest-convert-from-collection-to-listt
'developer tip' 카테고리의 다른 글
라 라벨이 정말 이렇게 느린가요? (0) | 2020.11.10 |
---|---|
Android Studio에서 모듈 이름을 바꾸시겠습니까? (0) | 2020.11.10 |
벡터에 NA가 1 개 이상 있는지 감지하는 가장 빠른 방법은 무엇입니까? (0) | 2020.11.10 |
CASE .. Oracle SQL의 WHEN 표현식 (0) | 2020.11.10 |
Google Developers Console에서 프로젝트를 삭제하는 방법 (0) | 2020.11.10 |