Ajde da kažemo da će u jednom trenutku biti milion objekata ili 10 miliona, a ne samo 10 hiljada :)
Iz kog razloga želiš da prikažeš sve objekte? Osim ako ne želiš da dozvoliš nekome da pokupi sve podatke iz tvoje baze...
Možeš da limitiraš pretragu na 500 rezultata i onda ti je lako da napraviš paginaciju:
Code:
var list = (from x in .... where ....).Take(500).ToList();
500 objekata nije mnogo da učitaš u memoriju i sa njima možeš lako da odradiš Skip() i Take().
Ukoliko baš hoćeš da prikažeš sve podatke onda je nezgodno da ih sve učitaš u memoriju već moraš da kreiraš 2 upita. Sa jednim ćeš dohvatiti ukupan broj rezultata koji zadovoljavaju uslov pretrage, a sa drugim ćeš dohvatiti samo set podataka:
Code:
var count = (from x in .... where ....).Count();
...
var list = (from x in .... where ....).Skip(...).Take(...).ToList();
Kada radiš pretragu sa velikim setom podataka, onda je zgodno da koristiš biblioteke koje su upravo tome namenjene:
-
Lucene.NET ukoliko ti treba embedded rešenje koje zahteva samo .NET framework
-
Solr.NET ukoliko ti treba više enterprise rešenje (zahteva Javu)