Prima di tutto, non è una query valida. Quando si utilizza la sintassi della query (from blah in blah ...
), è necessario avere una clausola select
. Dovrebbe essere più simile a:
var manager =
(from n in DataContext.Manager
where n.Name == "Jones"
select n).FirstOrDefault();
Per rispondere alla tua domanda, chiamando FirstOrDefault()
sulla vostra query restituirà il primo risultato della query o il valore di default per il tipo (molto probabilmente null
in questo caso). Per quello che stai andando, questo non sarà un uso adeguato in quanto la query può contenere più di un risultato.
Se si desidera verificare che la query restituisca un solo risultato, è necessario utilizzare il metodo SingleOrDefault()
. Restituirà o l'articolo prodotto dalla query, il valore predefinito null
se era vuoto o genera un'eccezione se c'era più di un articolo.
Se non si desidera generare un'eccezione, potrebbe essere più semplice inserire i primi due risultati in un elenco e verificare di averne uno solo.
var managers =
(from m in DataContext.Manager
where m.Name == "Jones"
select m).Take(2).ToList();
if (managers.Count == 1)
{
// success!
var manager = managers.First();
// do something with manager
}
else
{
// error
}
fonte
2012-01-16 22:08:24
Consultare la documentazione per il metodo FirstOrDefault. Restituisce il valore predefinito per il tipo di dati se non ci sono risultati. Se è necessario che * non più di 1 * record superi i criteri della query, utilizzare invece SingleOrDefault. –