Olá! Vamos filtrar dados com LINQ?
No último post vimos a moleza que é configurar o Entity e
utilizá-lo. Nesse post veremos como fazer consultas simples utilizando o LINQ.
Utilizando o mesmo projeto do último post, faremos um filtro
na coleção* de produtos que faz Bind* na grid de produtos.
Como o LINQ faz lembrar bastante o SQL, o Operador que faz
filtro é o “Where”.
Essa é a cara da grid que deixamos no último post e o
código.
protected
void Page_Load(object
sender, EventArgs e)
{
NORTHWNDEntities
dc = new NORTHWNDEntities();
gdvProdutos.DataSource = from p in dc.Products
select p;
gdvProdutos.DataBind();
}
Vamos fazer um filtro que nos mostre apenas os produtos cujo
CategoryID seja igual a 2. Abaixo segue a imagem da tela e o código modificado
com o filtro:
protected
void Page_Load(object
sender, EventArgs e)
{
NORTHWNDEntities
dc = new NORTHWNDEntities();
gdvProdutos.DataSource = from p in dc.Products
where p.CategoryID == 2
select p;
gdvProdutos.DataBind();
}
Digamos agora que você caro leitor precise de apenas algumas
das colunas da classe produtos. Como fazer para selecionar apenas as colunas
necessárias?
Lançaremos mão de um recurso chamado de Classe Anônima que,
assim como os métodos anônimos, são criados em tempo de execução.
Criação de classe anônima:
A classe comum é criada assim: Tipo teste1 = new Tipo(){
propriedade1 = 1, propriedade2 = 2}
Na classe anônima dispensamos a informação do Tipo apenas
informamos o nome das propriedades e no nosso caso o valor virá do banco de
dados.
select new { propriedade1, propriedade2, propriedade3}.
Essa é a cara da grid apenas com 3 propriedades e o código:
protected
void Page_Load(object
sender, EventArgs e)
{
NORTHWNDEntities
dc = new NORTHWNDEntities();
gdvProdutos.DataSource = from p in dc.Products
where p.CategoryID == 2
select new {
p.ProductName, p.UnitPrice, p.QuantityPerUnit };
gdvProdutos.DataBind();
}
Por hoje é só!
Espero que tenham gostado e aprendido coisas novas!
Nenhum comentário:
Postar um comentário