Share via


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:

  1. Use a sintaxe de consulta.

  2. Use a sintaxe do método.

  3. 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)

Outros recursos

Language-Integrated Query (LINQ)