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>



