Cześć, mam pytanie dotyczące interfejsów IEnumerable i IQueryable. Napisałem prosty program z zapytaniem do bay z użyciem tych dwóch interfejsów. Rozumiem, że główna różnica pomiędzy nimi jest to, że w przypadku IQueryable dane zostaną filtrowane na serwerze a w przypadku IEnumerable lokalnie. Postanowiłem jednak napisać do samo zapytanie z wykorzystniem tych dwóch interfejsów i obserwować róch na sieci.
IEnumerable<byte?> employeeIEnumberable =
dc.Adult_Census_Income_Binary_Classification_datasets.
Select(p => p.age).Take(10);
IQueryable<byte?> employeeIQueryable =
dc.Adult_Census_Income_Binary_Classification_datasets.
Select(p => p.age).Take(10);
IEnumerable<byte?> employeeIEnumberable =
dc.Adult_Census_Income_Binary_Classification_datasets.
Select(p => p.age);
employeeIEnumberable.Take(10);
IQueryable<byte?> employeeIQueryable =
dc.Adult_Census_Income_Binary_Classification_datasets.
Select(p => p.age);
employeeIQueryable.Take(10);
W pierwszym przypadku ruch na siecie w dwóch przypadkach jest taki sam. W drugim przypadku przy IEnumerable ruch ten jest znacznie większy, w przypadku IQueryable ruch pozostaje na niskim poziomie. I tutaj mam pytnie właściwie czemu w pierwszym przypadku ruch przy IEnumerable był na niskim poziomie skoro filtrowanie wyników przy użyciu tego interfejsu powinno odbyć się lokalnie?