Dlatego tworzę witrynę z recenzjami restauracji dla mojej społeczności. Muszę wydobyć dane z następujących tabel: RESTAURACJA, KUCHNIA, MIASTO, CENA i RATING (oceny klientów).
Zapytanie powinno zwrócić wszystkie restauracje o wybranej CUISINE_ID i zwrócić RESTAURANT_NAME, CUSINE_NAME, CUTY_NAME, PRICE_CODE oraz uśrednić wszystkie recenzje RATING_CODE i zwrócić obliczoną wartość. Nie mam nic przeciwko zwróceniu wszystkich danych poza średnią oceną.
Pracuję z LINQ to Entities tylko 2 dni, a LINQ od około 3 tygodni, więc naprawdę jestem nowicjuszem; Czekam na dostarczenie mojej książki LINQ z Amazon.com. Twoje wskazówki dotyczące pomocy będą mile widziane!
2 odpowiedzi
Powinno to wyglądać mniej więcej tak:
var avgForMatches =
(from r in context.Restaurants
where r.Cuisines.Any(c => c.CuisineName == cuisineName)
where r.Prices.Any(p => p.PriceCode == priceCode)
//... same pattern for other searches.
select r.RatingCode)
.Average();
context
to po prostu zmienna, która odwołuje się do instancji modelu encji. Zwykle opakowuję kod zapytania EF w coś takiego jak using (var context = new MyEntityContext()) {...}
. (Właściwie to zwykle używam wstrzykiwanej fabryki, zamiast tworzyć ją sam, ale masz ogólny pomysł.)
Przeczytaj o metodach agregujących (w tym średniej) w 101 przykładach linq — http://msdn.microsoft .com/en-us/vcsharp/aa336747
Podobne pytania
Nowe pytania
linq
Language Integrated Query (LINQ) jest składnikiem Microsoft .NET Framework, który dodaje natywne możliwości wykonywania zapytań danych do języków .NET. W razie potrzeby rozważ użycie bardziej szczegółowych tagów, na przykład [linq-to-sql], [linq-to-entity] / [entity-framework] lub [plinq]