将 List
本文关键字:System Array 转换 List Object | 更新日期: 2023-09-27 18:32:59
我有一个Array
Array[] Values;
我使用此代码对Array
进行了排序
List<Object> val= new List<Object>();
foreach (var arr in Values)
{
if (arr.GetValue(1, 9).Equals("Impact"))
val.Add(arr);
}
foreach (var arr in Values)
{
if (arr.GetValue(1, 9).Equals("Critical"))
val.Add(arr);
}
foreach (var arr in Values)
{
if (arr.GetValue(1, 9).Equals("High"))
val.Add(arr);
}
foreach (var arr in Values)
{
if (arr.GetValue(1, 9).Equals("Medium"))
val.Add(arr);
}
foreach (var arr in Values)
{
if (arr.GetValue(1, 9).Equals("Low"))
val.Add(arr);
}
现在我必须将List
值转换回System.Array[]
.
我尝试使用Values = val.ToArray();
执行此操作,但它给出了编译错误,object[]
无法隐式转换为System.Array[]
。
有没有办法将List<object>
转换为显式System.Array[]
?
或者有没有其他方法可以对Values
进行排序?
多用一点LINQ
Select
将帮助您解决问题:
Array[] Values = val.Select(x => (Array)x).ToArray();
注意:每个x
都必须可转换为Array
。
也就是说,Array
本身已经是一个数组。 对我来说,Array[]
似乎Array of Arrays
,元素的数据类型不是强类型。
Array a = new int[10]; //this is ok
Array b = new string[10]; //this is also ok
因此,您的Array[]
可能包含任何强类型数组。 {int[], string[], double[]}
等等...
除非它是你真正想要的,否则它似乎不是那么安全的设计 - 恕我直言。
在我看来,这是一个设计问题。为什么首先将 val-List 声明为 Object-List 而不是 Array-List?
那么,为什么不使用:
List<Object> val= new List<Array>();
而不是
List<Object> val = new List<Object>();
这样,一个简单的 ToArray() 调用应该可以正常工作。