Realizujemy kilka repozytoriów danych EF i mamy kilka pytań, które zawierają TOP 1
Z Entity Framework lepiej jest użyć .First() lub .Take (1) dla "TOP 1"?
Czytałem wiele postów sugerujące użycie .Take(1)
Kodeksu jestem przeglądu zastosowań .First()
Rozumiem że oba te elementy dają ten sam wynik dla przypisania obiektu, ale czy oba rzeczywiście odpowiadają na to samo zapytanie? Kiedy DB jest zapytany, czy będzie on w rzeczywistości z TOP 1
dla obu wniosków? Czy też wykonają zapytanie w całości w przeliczalne, po prostu weź pierwszą pozycję w kolekcji?
Ponadto, jeśli użyliśmy .FirstOrDefault()
, dlaczego mielibyśmy oczekiwać innego zachowania? Wiem, że podczas korzystania z IEnumerable, wywołanie .First()
na pustej kolekcji będzie rzucać, ale jeśli to jest tak naprawdę zmienia tylko kwerendę obejmującą TOP 1
wtedy nie powinienem oczekiwać absolutnie żadnej różnicy funkcjonalnej między .First()
i .FirstOrDefault()
.... prawda?
Czy istnieje pewna lepsza metoda niż te zakresy liczbowe dla wykonania kwerendy wykonującej TOP 1
?
Jak zmienić zapytanie ".Take (1)" w obiekt? – Gabe
Użyj 'First()' jeśli chcesz element. Użyj 'Take (1)', jeśli chcesz sekwencji jednego elementu. –