Como: Escrever consultas LINQ em translation from VPE for Csharp
Este tópico mostra três maneiras em que você pode escrever um LINQ consulta em translation from VPE for Csharp:
Use a sintaxe de consulta.
Use a sintaxe do método.
Use uma combinação de sintaxe de consulta e a sintaxe do método.
Os exemplos a seguir demonstram alguns simples LINQ consultas por meio de cada abordagem listada anteriormente. (2) Em geral, a regra é para uso (1) sempre que possível e uso e (3) sempre que necessário.
Observação: |
---|
O SAR consultas de operam em simples de memória coleções ; No entanto, a sintaxe básica é idêntica ao usado em LINQ to SQL e LINQ to XML. |
Exemplo
Sintaxe de consulta
A maneira recomendada para gravar a maioria das consultas é usar sintaxe de consulta criar expressões de consulta.O exemplo a seguir mostra três expressões de consulta.A primeira expressão de consulta demonstra como filtrar ou restringir os resultados, aplicando condições com um where cláusula. Ela retorna todos os elementos na sequência de fonte cujos valores são maiores do que 7 ou menor que 3.A segunda expressão demonstra a ordem de resultados retornados.A terceira expressão demonstra como agrupar os resultados de acordo com uma chave.Esta consulta retorna dois grupos com base na primeira letra da palavra.
// Query #1.
List<int> numbers = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// The query variable can also be implicitly typed by using var
IEnumerable<int> filteringQuery =
from num in numbers
where num < 3 || num > 7
select num;
// Query #2.
IEnumerable<int> orderingQuery =
from num in numbers
where num < 3 || num > 7
orderby num ascending
select num;
// Query #3.
string[] groupingQuery = { "carrots", "cabbage", "broccoli", "beans", "barley" };
IEnumerable<IGrouping<char, string>> queryFoodGroups =
from item in groupingQuery
group item by item[0];
Observe que o tipo das consultas é IEnumerable<T>. Todas essas consultas podem ser escritas usando var sistema autônomo mostrado no exemplo a seguir:
var query = from num in numbers...
Em cada exemplo anterior, as consultas não realmente executar até que você iterar a variável de consulta um foreach demonstrativo. Para obter mais informações, consulte Introdução às consultas do LINQ.
Sintaxe do método
Algumas operações de consulta devem ser expresso sistema autônomo uma telefonar de método.O mais comum tais métodos são aqueles que retornar valores numéricos singleton, sistema autônomo, por exemplo, Sum, Max, Min, Average, e assim por diante. Esses métodos devem sempre ser chamados pela última vez em qualquer consulta porque eles representam apenas um único valor e não podem servir sistema autônomo a fonte para uma operação de consulta adicionais.O exemplo a seguir mostra uma telefonar de método em uma expressão de consulta:
List<int> numbers1 = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
List<int> numbers2 = new List<int>() { 15, 14, 11, 13, 19, 18, 16, 17, 12, 10 };
// Query #4.
double average = numbers1.Average();
// Query #5.
IEnumerable<int> concatenationQuery = numbers1.Concat(numbers2);
Se o método h sistema autônomo parâmetros, eles são fornecidos na forma de um lambda expressão, sistema autônomo mostrado no exemplo a seguir:
// Query #6.
IEnumerable<int> largeNumbersQuery = numbers2.Where(c => c > 15);
Em consultas anteriores, somente consulta nº 4 executa imediatamente.Isso ocorre porque ele retorna um valor único e não um genérico IEnumerable<T> coleção. O próprio método tem para utilizar foreach para calcular seu valor.
Cada uma das consultas anteriores pode ser gravada por meio de digitação implícita com var, sistema autônomo mostrado no exemplo a seguir:
// var is used for convenience in these queries
var average = numbers1.Average();
var concatenationQuery = numbers1.Concat(numbers2);
var largeNumbersQuery = numbers2.Where(c => c > 15);
consulta misto e sintaxe do método
Este exemplo mostra como usar a sintaxe do método nos resultados de uma clásula de consulta.Basta colocar a expressão de consulta entre parênteses e, em seguida, aplicar o operador dot e chamar o método.No exemplo a seguir, a consulta # 7 retorna uma contagem dos números cujo valor é entre 3 e 7.Em geral, no entanto, é melhor usar uma segunda variável para armazenar o resultado da telefonar do método.Dessa forma, a consulta é menos provável que deve ser confundido com os resultados da consulta.
// Query #7.
// Using a query expression with method syntax
int numCount1 =
(from num in numbers1
where num < 3 || num > 7
select num).Count();
// Better: Create a new variable to store
// the method call result
IEnumerable<int> numbersQuery =
from num in numbers1
where num < 3 || num > 7
select num;
int numCount2 = numbersQuery.Count();
Como consulta # 7 retorna um único valor e não é uma coleção, a consulta for executada imediatamente.
A consulta anterior pode ser gravada por meio de digitação implícita com var, sistema autônomo segue:
var numCount = (from num in numbers...
Podem ser gravada na sintaxe do método sistema autônomo segue:
var numCount = numbers.Where(n => n < 3 || n > 7).Count();
Ele pode ser escrito por meio de digitação explícita, da seguinte maneira:
int numCount = numbers.Where(n => n < 3 || n > 7).Count();
Consulte também
Tarefas
Demonstra Passo a passo: Escrever consultas em C# (LINQ)
Conceitos
Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)
Referência
cláusula WHERE (Translation from VPE for Csharp Reference)