我有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
val转换回System.Array[]
。
我尝试使用Values = val.ToArray();
执行此操作,但它提出了编译错误,object[]
无法隐式转换为System.Array[]
。
有没有办法明确地将List<object>
转换为System.Array[]
?
或者还有其他方法可以对Values
进行排序吗?
答案 0 :(得分:2)
再多花一点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[]}
等等......
除非你真正想要它,否则它似乎不是那么安全的设计 - 恕我直言。
答案 1 :(得分:1)
在我看来,这是一个设计问题。为什么首先将val-List声明为Object-List而不是Array-List?
那么,为什么不使用:
List<Object> val= new List<Array>();
而不是
List<Object> val = new List<Object>();
这样,一个简单的ToArray()调用应该可以正常工作。