Sintaxe da consulta:
Vejamos a sintaxe genérica:
de iterador em Fonte de dadosselecionar iterador ;
Aqui:
- O Data_Source pode ser a lista que contém os dados.
- O iterador é usado para buscar os elementos do Data_Source.
Fonte de dados
Em todo este guia, usaremos a seguinte lista de registros como fonte de dados e todas as consultas serão aplicadas somente a essa fonte de dados. Certifique-se de executar este código em seu ambiente e modificar as instruções de consulta com os seguintes exemplos, um por um, que discutiremos:
usando Sistema ;
usando System.Collections.Generic ;
usando System.Linq ;
usando System.Collections ;
público aula cálculos
{
público estático vazio Principal ( )
{
// Criação da lista
Listar country_prices = novo Lista ( ) {
// Adiciona 5 registros na lista
novo Preços ( ) { item = 'Frutas' ,localização = 'EUA' , quantidade = 100 , custo = 345,78 } ,
novo Preços ( ) { item = 'Nozes' ,localização = 'Índia' , quantidade = 200 , custo = 3645,78 } ,
novo Preços ( ) { item = 'Outros' ,localização = 'REINO UNIDO' , quantidade = 500 , custo = 90,68 } ,
novo Preços ( ) { item = 'óleo' ,localização = 'EUA' , quantidade = 100 , custo = 345,78 } ,
novo Preços ( ) { item = 'Pimenta chili' ,localização = 'EUA' , quantidade = 10 , custo = 67,89 } ,
} ;
para cada ( era eu em country_prices )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
}
}
público aula Preços {
público corda item { pegar ; definir ; }
público corda localização { pegar ; definir ; }
público int quantidade { pegar ; definir ; }
público dobro custo { pegar ; definir ; }
}
Registros:
Explicação:
1. Crie os preços com os seguintes atributos:
2. Crie outra classe que é “Calculations” com o método main e crie a lista country_prices com cinco registros.
Selecione
Basicamente, “selecionar” é um operador de projeção que seleciona os atributos da fonte de dados especificada. A consulta começa com “de”. Em seguida, especificamos o iterador que itera sobre a fonte de dados. Em seguida, o operador “selecionar” é especificado.
Sintaxe:
Todos os atributos: do iterador em Data_Source selecione o iterador;
Atributo específico: do iterador em Data_Source selecione iterator.attribute;
Exemplo 1:
Vamos escrever uma consulta para selecionar todos os registros da lista.
usando Sistema ;usando System.Collections.Generic ;
usando System.Linq ;
usando System.Collections ;
público aula cálculos
{
público estático vazio Principal ( )
{
// Criação da lista
Listar country_prices = novo Lista ( ) {
// Adiciona 5 registros na lista
novo Preços ( ) { item = 'Frutas' ,localização = 'EUA' , quantidade = 100 , custo = 345,78 } ,
novo Preços ( ) { item = 'Nozes' ,localização = 'Índia' , quantidade = 200 , custo = 3645,78 } ,
novo Preços ( ) { item = 'Outros' ,localização = 'REINO UNIDO' , quantidade = 500 , custo = 90,68 } ,
novo Preços ( ) { item = 'óleo' ,localização = 'EUA' , quantidade = 100 , custo = 345,78 } ,
novo Preços ( ) { item = 'Pimenta chili' ,localização = 'EUA' , quantidade = 10 , custo = 67,89 } ,
} ;
//seleciona o operador na consulta
era dados = de eu em country_prices
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
}
}
público aula Preços {
público corda item { pegar ; definir ; }
público corda localização { pegar ; definir ; }
público int quantidade { pegar ; definir ; }
público dobro custo { pegar ; definir ; }
}
Saída:
Aqui, não especificamos nenhum atributo na consulta “selecionar”. Buscamos todos os atributos da consulta (dados) dentro do loop “foreach” usando o iterador.
Exemplo 2:
Agora, obtenha os itens especificando o atributo do item no operador “selecionar”. A consulta é ' de i em country_prices selecione i.item ”.
//selecione o operador para obter o atributo do item na consultaera dados = de eu em country_prices
selecionar eu . item ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu ) ;
}
Saída:
Linha # 21 – Linha # 29:
2. Onde
Se você deseja filtrar os dados com base em algumas condições, pode usar o operador “where” na consulta junto com a cláusula “select”. Mas o operador “where” é usado primeiro e depois o operador select é especificado.
Sintaxe:
Vamos ver como usar o operador “where” dentro da consulta LINQ.
de iterador em Fonte de dadosonde doença / s
selecionar iterador . atributo ;
Exemplo 1: condição única
Vamos filtrar os registros com base no atributo do item. Use o operador igual a (==) no operador “where” como condição e compare o iterador com “Chillies”. Assim, selecionam-se os registos que estão relacionados com “Pimentas”.
A consulta é “ de i em country_prices
onde i.item == “Pimentões”
selecione eu”
era dados = de eu em country_prices
onde eu . item == 'Pimenta chili'
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
Saída:
Existe apenas um registro com o item “Pimentões”.
Linha # 21 – Linha # 30:
Exemplo 2: Condições Múltiplas
Vamos filtrar os registros com base nos atributos de localização e quantidade. A quantidade deve ser maior que 50 e menor que 300. O local deve ser “EUA”.
A consulta é “ de i em country_prices
onde i.quantidade > 50
onde i.quantidade < 300
onde i.location == “EUA”
selecione eu”
era dados = de eu em country_prices
onde eu . quantidade > cinquenta
onde eu . quantidade < 300
onde eu . localização == 'EUA'
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
Saída:
Existem dois registros que corresponderam às condições anteriores.
Linha # 21 – Linha # 32:
Exemplo 3: E (&&) Operador
Podemos especificar o operador “e (&&)” para especificar várias condições ao mesmo tempo. Se todas as condições forem verdadeiras, os registros que atendem a todas as condições são retornados pela consulta.
Neste exemplo, selecionamos os registros se a quantidade for maior que 20 e o custo for 67,89.
A consulta é “ de i em country_prices
onde i.quantidade < 20 && i.custo == 67,89
selecione eu”
onde eu . quantidade < vinte && eu . custo == 67,89
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
Saída:
Existe apenas um registro com a quantidade menor que 20 e um custo de 67,89
Linha # 21 – Linha # 29:
Exemplo 4: Ou (||) Operador
O operador “ou (||)” também é usado para especificar várias condições por vez. Se pelo menos uma condição for verdadeira, os registros que atendem a essa condição são retornados.
Neste exemplo, selecionamos os registros se a quantidade for maior que 300 ou o local for “Tóquio”.
A consulta é “ de i em country_prices
onde i.quantidade > 300 || i.location == “Tóquio”
selecione eu”
onde eu . quantidade > 300 || eu . localização == 'Tóquio'
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
Saída:
Existe apenas um registro com uma quantidade maior que 300 (a primeira condição é atendida).
Linha # 21 – Linha # 29:
3. Ordenar por
Se quiser organizar os registros retornados pela consulta LINQ em ordem crescente ou decrescente com base nos valores de qualquer um dos atributos, você pode usar o operador “ordenar por” na consulta. Você precisa especificar este operador antes do operador “selecionar”.
Sintaxe:
Vamos ver como usar o operador “order by” dentro da consulta LINQ.
Ordem ascendente:
de iterador em Fonte de dadosordem por iterador . atributo ascendente
selecionar iterador ;
Ordem decrescente:
de iterador em Fonte de dadosordem por iterador . atributo descendente
selecionar iterador ;
Exemplo 1: Ordem ascendente
Selecione todos os atributos da fonte de dados (lista) e retorne-os em ordem crescente com base nos valores do atributo de quantidade.
A consulta é “ de i em country_prices
orderby i.quantity crescente
selecione eu”
ordem por eu . quantidade ascendente
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
Saída:
Linha # 21 – Linha # 29:
Exemplo 2: Ordem decrescente
Selecione todos os atributos da fonte de dados (lista) e retorne-os em ordem decrescente com base nos valores do atributo de custo.
A consulta é “ de i em country_prices
orderby i.cost descendente
selecione eu”
ordem por eu . custo descendente
selecionar eu ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
Saída:
Linha # 21 – Linha # 29:
4. Limite
Limit em SQL limita os registros que são retornados pela consulta. Ele retorna os principais registros retornados pela consulta. No LINQ, podemos conseguir isso utilizando o Skip() com o operador Take(). Take() obtém o número especificado de registros. Skip() é usado para especificar o número do registro inicial. Dessa forma, podemos alcançar a funcionalidade “limite” no LINQ.
Sintaxe:
( de iterador em Fonte de dadosselecionar iterador ) . Pular ( n ) . Pegar ( n ) ;
- Skip() é usado para pular os registros e retornar os registros restantes. Leva um inteiro que especifica o número de elementos a serem ignorados. No nosso caso, é 0.
- Take() é usado para obter “n” número de registros do primeiro registro.
Exemplo:
Selecione os três primeiros registros de cinco registros retornados pela consulta.
A consulta é “ (de i em country_prices
selecione i).Skip(0).Take(3)”
selecionar eu ) . Pular ( 0 ) . Pegar ( 3 ) ;
para cada ( era eu em dados )
{
Console . WriteLine ( eu . item + ' ' + eu . localização + ' ' + eu . quantidade + ' ' + eu . custo ) ;
}
}
Saída:
Linha # 21 – Linha # 28:
Conclusão
Aprendemos a escrever as consultas em C# LINQ, que é semelhante ao SQL. Como parte deste tutorial, discutimos como usar o operador “selecionar” para selecionar os registros da fonte de dados. Para filtrar os registros que são retornados pela consulta, utilizamos o operador “where” especificando as condições. Em seguida, aprendemos a ordenar os registros que são retornados pela consulta com o operador “ordenar por”. Por fim, para limitar os registros, utilizamos os operadores Skip() e Take().