Sprowadza się to głównie do historii LINQ.
LINQ pierwotnie miał być podobny do SQL i był używany (w dużej mierze, choć nie wyłącznie) do łączenia się z bazami danych SQL. Prowadzi to do tego, że duża część terminologii jest oparta na SQL.
Tak więc, „wybierz” pochodzi z SQL select
oświadczenie i „agregat” pochodzi z SQL zagregowanych funkcji (na przykład count
, sum
, avg
, min
, max
).
Dla tych, którzy kwestionują stopień, w jakim LINQ pierwotnie odnosi się do SQL, odsyłam do (na przykład) artykułów Microsoftu na temat Cω, który był językiem opracowanym przez Microsoft Research, i wydaje się, że tam, gdzie pracowała większość podstaw LINQ obecnie, zanim zostały dodane do C # i .NET.
Rozważmy na przykład artykuł MSDN na temat Cω , który mówi:
Operatory zapytań w Cω
Cω dodaje dwie szerokie klasy operatorów zapytań do języka C #:
- Operatory oparte na XPath do zapytań o zmienne składowe obiektu według nazwy lub typu.
- Operatory oparte na SQL do wykonywania skomplikowanych zapytań obejmujących wyświetlanie, grupowanie i łączenie danych z jednego lub więcej obiektów.
Przynajmniej o ile wiem, operatory oparte na XPath nigdy nie zostały dodane do C #, pozostawiając tylko te operatory, które zostały udokumentowane (zanim istniał LINQ) jako oparte bezpośrednio na SQL.
Teraz z pewnością jest prawdą, że LINQ nie jest identyczny z operatorami zapytań opartymi na SQL w Cω. W szczególności LINQ podąża za podstawowymi obiektami i wywołaniami funkcji języka C # znacznie bardziej niż Cω. Zapytania Cω podążały za składnią SQL jeszcze ściślej, więc możesz napisać coś takiego (ponownie, zaczerpnięte bezpośrednio z artykułu, do którego link znajduje się powyżej):
rows = select c.ContactName, o.ShippedDate
from c in DB.Customers
inner join o in DB.Orders
on c.CustomerID == o.CustomerID;
I tak, ten sam artykuł mówi konkretnie o używaniu zapytań opartych na SQL do zapytania danych pochodzących z rzeczywistych baz danych SQL:
Aby połączyć się z bazą danych SQL w Cω, musi być ona ujawniona jako zespół zarządzany (czyli plik biblioteki .NET), do którego następnie odwołuje się aplikacja. Relacyjna baza danych może być narażona na Cω jako zespół zarządzany za pomocą narzędzia wiersza polecenia sql2comega.exe lub okna dialogowego Dodaj schemat bazy danych ... w programie Visual Studio. Obiekty bazy danych są używane przez Cω do reprezentowania relacyjnej bazy danych hostowanej przez serwer. Obiekt bazy danych ma właściwość publiczną dla każdej tabeli lub widoku oraz metodę dla każdej funkcji o wartości tabeli znalezionej w bazie danych. Aby wysłać zapytanie do relacyjnej bazy danych, należy podać tabelę, widok lub funkcję o wartości tabeli jako dane wejściowe do jednego lub większej liczby operatorów opartych na SQL.
Poniższy przykładowy program i dane wyjściowe pokazują niektóre możliwości korzystania z operatorów opartych na SQL w celu przeszukiwania relacyjnej bazy danych w Cω. Baza danych użyta w tym przykładzie jest przykładową bazą danych Northwind dostarczaną z Microsoft SQL Server. Nazwą DB stosowany w tym przykładzie, odnosi się do globalnej przykład obiektu danych w Northwind przestrzeni nazw Northwind.dll zespół wytworzonej w sql2comega.exe .
Tak, tak, od samego początku (lub nawet przed początkiem, w zależności od twojego punktu widzenia) LINQ był wyraźnie oparty na SQL i miał na celu umożliwienie dostępu do danych w bazach danych SQL.