Si può solo creare nuovi array e mettere gli elementi che ti servono da tua matrice irregolare ad esso:
List<string> myListOfStrings = (new[] {listOfArrays[0][1], listOfArrays[1][1]), listOfArrays[2][1]}).ToList();
O fare qualcosa di simile:
List<string> myListOfStrings = new List<string>();
for(int i = 0; i < listOfArrays.Length; i++) myListOfStrings.Add(listOfArrays[i][1]);
PS Specialmente per dasblinkenligh:
class Program
{
static string[][] GetRandomJaggedArray(int numberOfArrays, int numberOfElements)
{
string[][] temp = new string[numberOfArrays][];
for (int i = 0; i < numberOfArrays; i++)
{
temp[i] = new string[numberOfElements];
for (int i2 = 0; i2 < temp.Length; i2++)
temp[i][i2] = Guid.NewGuid().ToString();
}
return temp;
}
static TimeSpan getElementsAtIndexLINQ(string[][] listOfArrays, int index, int count)
{
Stopwatch s = new Stopwatch();
List<string> myListOfStrings;
s.Start();
for (int i = 0; i < count; i++)
myListOfStrings = listOfArrays.Select(a => a[index]).ToList();
s.Stop();
return s.Elapsed;
}
static TimeSpan getElementsAtIndexFOR(string[][] listOfArrays, int index, int count)
{
Stopwatch s = new Stopwatch();
List<string> myListOfStrings = new List<string>();
s.Start();
for (int i2 = 0; i2 < count; i2++)
for (int i = 0; i < listOfArrays.Length; i++) myListOfStrings.Add(listOfArrays[i][index]);
s.Stop();
return s.Elapsed;
}
static void Main(string[] args)
{
string[][] test1 = GetRandomJaggedArray(100, 1000);
string[][] test2 = GetRandomJaggedArray(100, 1000);
TimeSpan t1 = getElementsAtIndexLINQ(test1, 1, 10);
TimeSpan t2 = getElementsAtIndexFOR(test2, 1, 10);
Console.WriteLine("Linq method took {0} ticks to execute", t1.Ticks);
Console.WriteLine("For method took {0} ticks to execute", t2.Ticks);
Console.ReadKey();
}
}
uscita:
più su LINQ VS qui: For vs. Linq - Performance vs. Future
Dang mi ha battuto. Ma sì, questo è il motivo per cui ".Select". – ryanyuyu
È eccellente se non ci si preoccupa molto delle prestazioni qui, tuttavia LINQ è significativamente più lento del semplice ciclo. – Fabjan
@Fabjan Ti dispiacerebbe condividere i numeri per supportare la tua richiesta "significativamente più lenta"? – dasblinkenlight