Другая альтернатива System.arraycopy
:
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
Как вы "проверяли, что внутри topThree"? Самый простой способ сделать это - распечатать их:
using System;
using System.Linq;
public class Test
{
static void Main()
{
int[] array = new int[7] { 1, 3, 5, 2, 8, 6, 4 };
var topThree = (from i in array
orderby i descending
select i).Take(3);
foreach (var x in topThree)
{
Console.WriteLine(x);
}
}
}
По-моему, все в порядке ...
Есть потенциально более эффективные способы поиска N верхних значений, чем сортировка, но это определенно сработает. Возможно, вы захотите использовать точечную нотацию для запроса, который делает только одно:
var topThree = array.OrderByDescending(i => i)
.Take(3);
Ваш код мне кажется подходящим, может быть, вы хотите вернуть результат в другой массив?
int[] topThree = array.OrderByDescending(i=> i)
.Take(3)
.ToArray();
Это связано с задержкой выполнения запроса linq.
Как предлагается, если вы добавите .ToArray () или .ToList () или аналогичные, вы получите правильный результат.