我想避免的:
ManagementClass m = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection managementObjects = m.GetInstances();
List<ManagementObject> managementList = new List<ManagementObject>();
foreach(ManagementObject m in managementObjects){
managementList.Add(m);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将该集合放入一个看起来像这样的列表:
List<ManagementObject> managementList = new List<ManagementObjec>(collection_array);
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 123
什么版本的框架?使用3.5你可能会使用:
List<ManagementObject> managementList = managementObjects.Cast<ManagementObject>().ToList();
Run Code Online (Sandbox Code Playgroud)
(编辑以删除更简单的版本;我检查并ManagementObjectCollection仅实现非泛型IEnumerable形式)
jac*_*ith 33
你可以用
using System.Linq;
Run Code Online (Sandbox Code Playgroud)
这将为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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127928 次 |
| 最近记录: |