Devacron.com

Πως να παιρνουμε τη θεση ενος στοιχειου σε array μεσω foreach loop (Linq)

Ας υποθεσουμε οτι εχουμε ενα array το οποιο ειναι γεματο με μερικους αριθμους. Αν για καποιο λογο θελησουμε να τους διαβασουμε  ολους εναν προς ενα τοτε αυτο μπορει να γινει ευκολα με ενα for loop. Μεσω αυτου του loop εχουμε την δυνατοτητα να παρουμε και τη θεση του καθε στοιχειου μεσα στο array. Ας δειξω τον κωδικα ωστε να γινω ποιο κατανοητος:

using System;

namespace @foreach
{
	class Program
	{
		static void Main(string[] args)
		{
			int[] array = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
			for (int i = 0 ; i< array.Length; i++)
			{
				Console.WriteLine(i + ": " + array[i]);
			}
		}
	}
}

Αν το τρεξουμε θα δουμε κατι σαν και αυτο :

Στα αριστερα η θεση του στοιχειου μεσα στο array και στα δεξια η τιμη του. Αν ομως για καποιο λογο χρειαστει σε καποιο απο τα προγραμματα μας να χρησιμοποιησουμε foreach loop τοτε για να παρουμε την θεση του στοιχειου θα χρειαστει διαφορετικη προσεγγιση. Για να το καταφερουμε αυτο θα πρεπει να χρησιμοποιησουμε Linq. O κωδικας λοιπον θα ειναι καπως ετσι:

using System;
using System.Linq;

namespace @foreach
{
	class Program
	{
		static void Main(string[] args)
		{
			int[] array = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
			foreach (var number in array.Select((x, i) => new { Value = x, Index = i }))
				Console.WriteLine(number.Index + ": " + number.Value);
		}
	}
}

Δυστυχως υπαρχουν περιπτωσεις που η χρηση του foreach ειναι μονοδρομος, οποτε αν χρειαζεστε τον Indexer  αυτος ειναι ο μονος τροπος που εγω εχω βρει. Σημαντικο να μην ξεχασουμε την προσθηκη του using System.Linq στην αρχη.

Exit mobile version