Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os métodos de conversão alteram o tipo de objetos de entrada.
Importante
Esses exemplos usam uma fonte de System.Collections.Generic.IEnumerable<T> dados. Fontes de dados baseadas em System.Linq.IQueryProvider uso de fontes de dados System.Linq.IQueryable<T> e árvores de expressão. As árvores de expressão têm limitações na sintaxe C# permitida. Além disso, cada IQueryProvider fonte de dados, como o EF Core , pode impor mais restrições. Verifique a documentação da sua fonte de dados.
As operações de conversão em consultas LINQ são úteis em várias aplicações. Seguem-se alguns exemplos:
- O Enumerable.AsEnumerable método pode ser usado para ocultar a implementação personalizada de um tipo de um operador de consulta padrão.
- O Enumerable.OfType método pode ser usado para habilitar coleções não parametrizadas para consultas LINQ.
- Os métodos Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToList e Enumerable.ToLookup podem ser usados para forçar a execução imediata da consulta em vez de adiá-la até que a consulta seja enumerada.
Métodos
A tabela a seguir lista os métodos de operador de consulta padrão que executam conversões de tipo de dados.
Os métodos de conversão nesta tabela cujos nomes começam com "As" alteram o tipo estático da coleção de origem, mas não a enumeram. Os métodos cujos nomes começam com "Para" enumeram a coleção de origem e colocam os itens no tipo de coleção correspondente.
| Nome do método | Descrição | Sintaxe da expressão de consulta C# | Mais Informações |
|---|---|---|---|
| AsEnumerable | Retorna a entrada digitada como IEnumerable<T>. | Não aplicável. | Enumerable.AsEnumerable |
| AsQueryable | Converte a (genérico) IEnumerable em um (genérico) IQueryable. | Não aplicável. | Queryable.AsQueryable |
| Transmitir | Converte os elementos de uma coleção para um tipo especificado. | Use uma variável de intervalo explicitamente digitada. Por exemplo:from string str in words |
Enumerable.Cast Queryable.Cast |
| OfType | Filtra valores, dependendo da sua capacidade de serem convertidos para um tipo especificado. | Não aplicável. | Enumerable.OfType Queryable.OfType |
| ToArray | Converte uma coleção em uma matriz. Esse método força a execução da consulta. | Não aplicável. | Enumerable.ToArray |
| ToDictionary | Coloca elementos em um Dictionary<TKey,TValue> com base em uma função de seletor de chave. Esse método força a execução de uma consulta. | Não aplicável. | Enumerable.ToDictionary |
| Lista de Tarefas | Converte uma coleção em um List<T>. Esse método força a execução da consulta. | Não aplicável. | Enumerable.ToList |
| ToLookup | Coloca elementos em um Lookup<TKey,TElement> (um dicionário um-para-muitos) de acordo com uma função seletora de chaves. Esse método força a execução da consulta. | Não aplicável. | Enumerable.ToLookup |
Nota
Os exemplos a seguir neste artigo usam as fontes de dados comuns para essa área.
Cada Student tem um nível de grau, um departamento principal e uma série de classificações. A Teacher também tem uma City propriedade que identifica o campus onde o professor tem aulas. A Department tem um nome, e uma referência a um Teacher que serve como chefe de departamento.
Você pode encontrar o conjunto de dados de exemplo no repositório de origem.
public enum GradeLevel
{
FirstYear = 1,
SecondYear,
ThirdYear,
FourthYear
};
public class Student
{
public required string FirstName { get; init; }
public required string LastName { get; init; }
public required int ID { get; init; }
public required GradeLevel Year { get; init; }
public required List<int> Scores { get; init; }
public required int DepartmentID { get; init; }
}
public class Teacher
{
public required string First { get; init; }
public required string Last { get; init; }
public required int ID { get; init; }
public required string City { get; init; }
}
public class Department
{
public required string Name { get; init; }
public int ID { get; init; }
public required int TeacherID { get; init; }
}
Nota
Você pode consultar as fontes de dados comuns para essa área no artigo Visão geral dos operadores de consulta padrão .
Exemplo de sintaxe de expressão de consulta
O exemplo de código a seguir usa uma variável de intervalo explicitamente tipada para converter um tipo em um subtipo antes de acessar um membro que está disponível somente no subtipo.
IEnumerable people = students;
var query = from Student student in people
where student.Year == GradeLevel.ThirdYear
select student;
foreach (Student student in query)
{
Console.WriteLine(student.FirstName);
}
A consulta equivalente pode ser expressa usando a sintaxe do método, conforme mostrado no exemplo a seguir:
IEnumerable people = students;
var query = people
.Cast<Student>()
.Where(student => student.Year == GradeLevel.ThirdYear);
foreach (Student student in query)
{
Console.WriteLine(student.FirstName);
}