LINQ - компонент Microsoft .NET Framework, який надає можливості виконання запитів даних до мов, що входять у .NET. Хоча порти існують для PHP (PHPLinq), JavaScript(linq.js), TypeScript (linq.ts),і ActionScript (ActionLinq), - ні один із них не є рівним LINQ в C#.
Давайте розробимо додаток на мові прогормаування С#, за допомогою якого ми при натисканні на кнопку button1 виведемо інформацію про всі експортні товари, поле країни походження яких рівне “uk” в dataGridView1.
namespace ExportTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
using (Context context = new Context())
{
dataGridView1.DataSource = context.Goods.ToList<Goods>();
}
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Columns.Clear();
using (Context context = new Context())
{
dataGridView1.DataSource = context.Goods.Where(x=>x.ExportCountry == "uk").ToList<Goods>();
}
}
}
}
Отже, Linq є чудовим інструментом при роботі з базами даних. І він має свої переваги:
- Декларативний підхід робить запити більш зрозумілими та компактними;
- Розширюваність та дерева виразів дозволяють здебільшого узгоджено запитувати кілька джерел;
- Широкий діапазон операторів, що надаються за замовчуванням, та інші можуть бути легко додані для LINQ до об'єктів;
- Навіть запити в процесі можуть бути реалізовані способами, відмінними від LINQ для об'єктів - наприклад Parallel LINQ і моя власна платформа Push LINQ;
- Здорово, що можна уникнути SQL у рядках;
- Мовні функції, введені в першу чергу для LINQ, широко застосовуються в інших місцях;
Хоча у нього є суттєві недоліки:
- Вирази запитів недостатньо добре зрозумілі та використовуються надто часто. Часто виклик простого методу коротший і простий;
- Неминучі невідповідності між невідповідністю імпедансу постачальника все ще присутні, що розумно, але необхідно розуміти;
- Завжди будуть якісь речі, які ви можете зробити в SQL, але не в LINQ;
- Не розуміючи, що відбувається, легко написати дуже неефективний код;
- Це новий спосіб мислення про доступ до даних для більшості розробників, і потрібен час для розуміння, щоб просочитися;
- Деякі оператори є "missing", особливо еквіваленти OrderBy для речей, відмінних від замовлення, наприклад, пошук елемента з максимальним значенням властивості;
Список використаних джерел:
1. http://www.linqpad.net/
_________________
Науковий керівник: Кіш Надія Василівна, кандидат педагогічних наук, доцент, Державний вищий навчальний заклад «Ужгородський національний університет», м. Ужгород