Sólo en caso de que estés utilizando .NET 2.0 y no tiene acceso a LINQ:
static T First<T>(IEnumerable<T> items)
{
using(IEnumerator<T> iter = items.GetEnumerator())
{
iter.MoveNext();
return iter.Current;
}
}
Este debe hacer lo que está buscando ... usa genéricos para que pueda obtener el primer elemento de cualquier tipo IEnumerable.
de llamadas que de este 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);
Usted puede modificarlo con bastante facilidad para imitar .NET de 3,5 IEnumerable.ElementAt() método de extensión:
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;
}
}
Llamarlo así:
int[] items = { 1, 2, 3, 4, 5 };
int elemIdx = 3;
int item = ElementAt<int>(items, elemIdx);
Por supuesto, si hacer tener acceso a LINQ, entonces hay un montón de buenas respuestas publicadas ya ...
usted debería ser 'using' enumer - pero aparte de eso, buena ;-P –
Gracias Marc - editado. =) –
Vale la pena señalar que SingleOrDefault devolverá 1) El único elemento si solo hay un artículo. 2) nulo si no hay elementos. 3) lanzar una excepción si hay más de un elemento. –