В основному це зводиться до історії LINQ.
Спочатку LINQ мав бути схожим на SQL і використовувався (значною мірою, але не виключно) для підключення до баз даних SQL. Це призводить до того, що значна частина його термінології базується на SQL.
Таким чином, «виберіть» прийшов з SQL select
заяви, а «агрегат» прийшов з агрегатних функцій SQL (наприклад, count
, sum
, avg
, min
, max
).
Для тих, хто ставить під сумнів ступінь, до якого LINQ спочатку стосувався SQL, я б посилався на (наприклад) статті Microsoft про Cω, що була мовою, розроблена Microsoft Research, і, здається, там, де працювала більшість основ LINQ до того, як їх додали до C # та .NET.
Наприклад, розглянемо статтю MSDN про Cω , де сказано:
Оператори запитів у Cω
Cω додає два широких класи операторів запитів до мови C #:
- Оператори на основі XPath для запиту змінних членів об’єкта за назвою чи типом.
- Оператори на основі SQL для виконання складних запитів, що включають проекцію, групування та об'єднання даних з одного або декількох об'єктів.
Принаймні, наскільки я знаю, оператори на базі XPath ніколи не додавалися до C #, залишаючи лише ті оператори, які були задокументовані (до існування LINQ), як такі, що базуються безпосередньо на SQL.
Тепер, безумовно, вірно, що LINQ не ідентичний операторам запитів на основі SQL в Cω. Зокрема, LINQ слідує за основними об'єктами та функціями C # синтаксисом набагато ближче, ніж це робив Cω. Запити Cω ще більше уважно стежили за синтаксисом SQL, тож ви можете написати щось подібне (знову ж таки, витягнутий безпосередньо із статті, що пов’язана вище):
rows = select c.ContactName, o.ShippedDate
from c in DB.Customers
inner join o in DB.Orders
on c.CustomerID == o.CustomerID;
І так, в цій же статті йдеться конкретно про використання запитів на основі SQL для запиту даних, що надходять із фактичних баз даних SQL:
Щоб підключитися до бази даних SQL в Cω, вона повинна бути викрита як керована збірка (тобто файл бібліотеки .NET), на який потім посилається додаток. Реляційна база даних може бути піддана дії Cω як керованої збірки або за допомогою інструменту командного рядка sql2comega.exe або схеми Додати базу даних ... діалогового вікна з Visual Studio. Об'єкти бази даних використовуються Cω для представлення реляційної бази даних, розміщеної сервером. База даних об'єкт має відкрите властивість для кожної таблиці або уявлень, а також методу для кожної функції табличній знайденої в базі даних. Для запиту на реляційну базу даних функція таблиці, перегляду або таблиці повинна бути вказана як вхід до одного або декількох операторів на базі SQL.
Наведені нижче приклади програми та результату показують деякі можливості використання операторів на основі SQL для запиту реляційної бази даних у Cω. База даних, що використовується в цьому прикладі, є зразком бази даних Northwind, яка постачається разом із Microsoft SQL Server. Ім'я БД , що використовується в прикладі відноситься до глобального примірника об'єкта бази даних в Northwind простору імен Northwind.dll збірки , що генеруються з використанням sql2comega.exe .
Так, так, з самого початку (або навіть перед початком, залежно від точки зору) LINQ явно базувався на SQL і призначений спеціально для доступу до даних у базах даних SQL.