Załóżmy, że mam tabelę o nazwie Populacja, która przechowuje dane demograficzne. W T-SQL, aby uzyskać zliczania osób powyżej 50 lat, mogę zrobić coś takiego:Czy Linq pobiera najpierw wszystkie rekordy, jeśli wykonuję obliczenia?
SELECT COUNT(*) FROM POPULATION
WHERE AGE > 50
Myślałem następujące oświadczenie LINQ będzie działać, ale to po prostu zwraca zero, a ja nie rozumiem dlaczego.
var count = _context.Population.Count(x => x.Age > 50);
W porządku dla mnie, aby rzeczywiście uzyskać zliczania, muszę zrobić jedną z następujących czynności:
var count = _context.Populaton.Where(x => x.Age > 50).Count();
var count = _context.Population.Select(x => x.Age > 50).Count();
Dlaczego powyższe scenariusze przypadek?
Czy są jakieś szczegóły dotyczące implementacji, których opuszczasz? context.TableName.Count (x => x.SomeCondition); działa dobrze dla mnie. – jeffora
Twoje pierwsze zdanie LINQ * powinno * działać tak samo jak poprzednie dwa. To brzmi jak problem z dostawcą. Z jakiego dostawcy LINQ korzystasz? – Greg
Odpowiedź wybrana na to pytanie jest błędna i nieistotna. Jest jeszcze coś innego, najprawdopodobniej z dostawcą zapytań, którego używasz. – jason