martedì 15 novembre 2011

C# Sequence contains no elements

Questo problema ha tante possibili radici, ma generalmente si verifica quando una lambda fallisce, o meglio quando i criteri della lambda portano al fallimento della richiesta stessa.

In questo primo esempio ci si presenta l'eccezione nella First

public class item
{
public int id;
public string name;
}


static void Main(string[] args)
{
List<item> items = new List<item>();

items.Add(new item() { id = 1, name = "ME" });
items.Add(new item() { id = 2, name = "TE" });

var item = items.First(c => c.id == 3);

Console.ReadLine();
}


Una via di risoluzione è la seguente tuttavia non è sempre la migliore.

var item = items.FirstOrDefault(c => c.id == 3);


Oppure verificando prima con un count

static void Main(string[] args)
{
List<item> items = new List<item>();

items.Add(new item() { id = 1, name = "ME" });
items.Add(new item() { id = 2, name = "TE" });


item iSelected = new item();
if (items.Count(c=>c.id ==3)> 0)
{
iSelected = items.FirstOrDefault(c => c.id == 3);
}

Console.ReadLine();
}


In questo modo si avrà sempre la possibilità di ovviare all'errore..

1 commento:

Anonimo ha detto...

Invece che if (items.Count(c=>c.id ==3)> 0) e` meglio usare if (items.Any(c=>c.id ==3))