Primeiro()
- Retorna o primeiro elemento de uma sequência.
- Ele gera um erro quando Não há elemento no resultado ou a fonte é nula.
- você deve usá-lo, se mais de um elemento for esperado e você desejar apenas o primeiro elemento.
FirstOrDefault ()
- Retorna o primeiro elemento de uma sequência ou um valor padrão se nenhum elemento for encontrado.
- Ele gera um erro Apenas se a fonte for nula.
- você deve usá-lo, se mais de um elemento for esperado e você desejar apenas o primeiro elemento. Também é bom se o resultado estiver vazio.
Temos uma tabela UserInfos, que possui alguns registros, como mostrado abaixo. Com base nesta tabela abaixo, criei um exemplo ...
Como usar o First ()
var result = dc.UserInfos.First(x => x.ID == 1);
Há apenas um registro em que ID == 1. Deve retornar esse
ID de registro : 1 Nome: Manish Sobrenome: Dubey Email: xyz@xyz.com
var result = dc.UserInfos.First(x => x.FName == "Rahul");
Existem vários registros em que FName == "Rahul". O primeiro registro deve ser retornado.
ID: 7 Nome: Rahul Sobrenome: Sharma E-mail: xyz1@xyz.com
var result = dc.UserInfos.First(x => x.ID ==13);
Não há registro com o ID == 13. Um erro deve ocorrer.
InvalidOperationException: Sequence não contém elementos
Como usar FirstOrDefault ()
var result = dc.UserInfos.FirstOrDefault(x => x.ID == 1);
Há apenas um registro em que ID == 1. Deve retornar esse
ID de registro : 1 Nome: Manish Sobrenome: Dubey Email: xyz@xyz.com
var result = dc.UserInfos.FirstOrDefault(x => x.FName == "Rahul");
Existem vários registros em que FName == "Rahul". O primeiro registro deve ser retornado.
ID: 7 Nome: Rahul Sobrenome: Sharma E-mail: xyz1@xyz.com
var result = dc.UserInfos.FirstOrDefault(x => x.ID ==13);
Não há registro com o ID == 13. O valor de retorno é nulo
Espero que ajude você a entender quando usar First()
ou FirstOrDefault()
.
.First
e.FirstOrDefault
ambos os predicados tomar como argumentos, por isso,var result = List.Where(x => x == "foo").First();
poderia ser reescrita comovar result = List.First(x => x == "foo");