O Language Integrated Query (LINQ) é um componente do Microsoft .NET que adiciona funcionalidades de consulta em algumas linguagens de programação .NET. O LINQ corresponde a uma sintaxe unificada, inicialmente incorporada às linguagens C# e Visual Basic, para consultas em fontes de dados variadas. A sintaxe de consulta da LINQ foi inspirada na Structured Query Language (SQL), que é uma linguagem padrão para comunicação com bancos de dados relacionais. Assim como na linguagem SQL, as expressões de consulta LINQ permitem a construção de instruções variadas para extração de informações. Ele define um conjunto de métodos chamados operadores de consulta, expressões lambda e tipos anônimos.
O LINQ é um conjunto de recursos introduzidos no Visual Studio 2008 que amplia os poderosos recursos de consulta para a sintaxe da linguagem C# e Visual Basic. O LINQ proporciona padrões intuitivos para o desenvolvimento queries para consulta e atualização de dados além de poder ser extendida para dar suporte a qualquer tipo de banco de dados. O Visual Studio inclui assemblies provedores de LINQ que permitem o uso do LINQ com coleções do .NET Framework, bancos de dados do SQL Server, conjuntos de dados ADO.NET e documentos XML.
LINQ: https://msdn.microsoft.com/pt-br/library/bb397897.aspx
101 Exemplos LINQ: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
Usando o LINQ
1 – Você pode criar uma aplicação web MVC usando o template padrão, criar um modelo de dados Code First e alimenta-lo com alguns dados no banco de dados MSSQL ou usar o exemplo anterior clicando aqui. Você deve obter uma página web com uma visão que exibe os seguintes dados:
2 – Modifique o controlador e a visão de acordo com os códigos abaixo para criar uma pesquisa e uma busca para sua visão:
Exemplo:
Neste exemplo utilizamos a aplicação criada anteriormente e utilizamos a linguagem LINQ para exibir os dados exibidos na visão e também para criar uma pesquisa que busca os caracteres iniciais do campo chamado cursos.
C#
Controlador
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using WebApplication1.Models; namespace WebApplication1.Controllers { public class HomeController : Controller { // Cria instancia do banco de dados MinhaAppMeuDB DB = new MinhaAppMeuDB(); public ActionResult Index(string busca = null) { // Usando uma sintaxe simples do LINQ // Seleciona todos as propriedades dos cursos // Ordena pela propriedade curso // e pesquisa por caracteres iniciais do campo curso var modelo = from r in DB.Cursos where busca == null || r.Curso.StartsWith(busca) orderby r.Curso select r; return View(modelo); } // Cria método override protected override void Dispose(bool disposing) { // Limpa os recursos if (DB != null) { DB.Dispose(); } base.Dispose(disposing); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your application description page."; return View(); } } }
Visão
@model IEnumerable<WebApplication1.Models.CursosModelo> @{ ViewBag.Title = "Home Page"; } <div class="jumbotron"> <h1>Desenvolvimento Aberto - ASP.NET</h1> <p class="lead">ASP.NET - MVC - Entity Framework - HTML, CSS and JavaScript.</p> </div> <form> <input type="search" name="busca" /> <input type="submit" name="Buscar por nome" /> </form> <br /> <table style="width:700px"> <tr> <th>Cursos</th> <th>Linguagem</th> <th>Descrição</th> </tr> @foreach (var item in Model) { <tr> <td>@item.Curso</td> <td>@item.Linguagem</td> <td>@item.Descr</td> </tr> } </table>