using (var session = store.OpenSession()) { var audi = from car in session.Query<Car>() where car.Make.StartsWith("Audi") select car; MessageBox.Show(String.Format("Audi count: {0}", audi.Count())); }
W zapytaniach można także używać agregatów, np do policzenia średniej:
using (var session = store.OpenSession()) { var avg = session.Query<Car>().ToArray().Average(c => c.Price); MessageBox.Show(String.Format("Average Price: {0}",avg)); }
Nic nie stoi także na przeszkodzie, by używać projekcji - mechanizmu, w którym pobieramy tylko fragment dokumentu z bazy o takich polach jakie sobie wybierzemy w typie anonimowym. Należy pamiętać, że zmiany na takich obiektach nie będą śledzone przez klienta i nie zostaną uwzględnione przy operacji SaveChanges().
using (var session = store.OpenSession()) { var bestengines = (from car in session.Query<Car>() orderby car.EnginePower descending select new {car.Make, car.EnginePower}).Take(5); var s = Enumerable.Aggregate(bestengines, "", (current, bestengine) => current + (bestengine.Make + ", " + bestengine.EnginePower + "\n")); MessageBox.Show(String.Format("Best engines: {0}", s)); }
Klient Ravena wspiera także paginację, a więc możemy pobierać dane porcjami z bazy za pomocą operatorów Skip i Take
var bestengines = (from car in session.Query<Car>() orderby car.EnginePower descending select new { car.Make, car.EnginePower }).Skip(5).Take(5);
Brak komentarzy:
Prześlij komentarz