Nel caso in cui si sta utilizzando .NET 2.0 e non hanno accesso a LINQ:
static T First<T>(IEnumerable<T> items)
{
using(IEnumerator<T> iter = items.GetEnumerator())
{
iter.MoveNext();
return iter.Current;
}
}
Questo dovrebbe fare quello che stai cercando ... usa i generici in modo da ottenere il primo oggetto su qualsiasi tipo IEnumerable.
chiamata in questo modo:
List<string> items = new List<string>() { "A", "B", "C", "D", "E" };
string firstItem = First<string>(items);
O
int[] items = new int[] { 1, 2, 3, 4, 5 };
int firstItem = First<int>(items);
è possibile modificare abbastanza facilmente per imitare .NET 3.5 di IEnumerable.ElementAt() metodo di estensione:
static T ElementAt<T>(IEnumerable<T> items, int index)
{
using(IEnumerator<T> iter = items.GetEnumerator())
{
for (int i = 0; i <= index; i++, iter.MoveNext()) ;
return iter.Current;
}
}
chiamata in questo modo:
int[] items = { 1, 2, 3, 4, 5 };
int elemIdx = 3;
int item = ElementAt<int>(items, elemIdx);
Naturalmente se si fare avere accesso a LINQ, poi ci sono un sacco di buone risposte postato già ...
si dovrebbe essere 'using' enumer - ma a parte questo, buona ;-p –
Grazie Marc - a cura. =) –
Vale la pena sottolineare che SingleOrDefault restituirà 1) L'unico elemento se c'è solo un elemento. 2) null se non ci sono articoli. 3) lancia un'eccezione se c'è più di un oggetto. –