Convertendo tipos de dados
Métodos de conversão alterar o tipo de objetos de entrada.
Operações de conversão em consultas LINQ são úteis em uma variedade de aplicativos. Estes são alguns exemplos:
O Enumerable.AsEnumerable``1 método pode ser usado para ocultar a implementação de um tipo personalizado de um operador de consulta padrão.
O Enumerable.OfType``1 método pode ser usado para habilitar a coleções sem parâmetros para a consulta do LINQ.
O Enumerable.ToArray``1, Enumerable.ToDictionary``2, Enumerable.ToList``1, e Enumerable.ToLookup``2 métodos podem ser usados para forçar a execução da consulta imediata em vez de se adiar a ele até que a consulta é enumerada.
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 "Como" alterar o tipo estático da coleção de origem, mas não enumerar. Os métodos cujos nomes começam com "Para enumerar a coleção de origem e coloque os itens na coleção correspondente" digite.
Nome do método |
Descrição |
C# Expressão de consulta sintaxe |
Visual BasicSintaxe de expressões de consulta |
Mais informações |
---|---|---|---|---|
AsEnumerable |
Retorna a entrada digitada como IEnumerable. |
Não aplicável. |
Não aplicável. |
|
AsQueryable |
Converte (genérico) IEnumerable para (genérico) IQueryable. |
Não aplicável. |
Não aplicável. |
|
Elenco |
Projeta os elementos de uma coleção para um tipo especificado. |
Use uma variável digitada implicitamente do intervalo. Por exemplo: from string str in words |
From … As … |
|
OfType |
Filtros de valores, dependendo de sua capacidade de ser convertido em um tipo especificado. |
Não aplicável. |
Não aplicável. |
|
ToArray |
Converte uma coleção em uma matriz. Esse método força a execução da consulta. |
Não aplicável. |
Não aplicável. |
|
ToDictionary |
Coloca os elementos em um Dictionary com base em uma função de seletor de chave. Esse método força a execução da consulta. |
Não aplicável. |
Não aplicável. |
|
ToList |
Converte uma coleção para um List. Esse método força a execução da consulta. |
Não aplicável. |
Não aplicável. |
|
ToLookup |
Coloca os elementos em um Lookup (um dicionário de um-para-muitos) com base em uma função de seletor de chave. Esse método força a execução da consulta. |
Não aplicável. |
Não aplicável. |
O exemplo de código a seguir usa uma variável de intervalo explicitamente digitado na C# ou o From As cláusula Visual Basic para converter um tipo para um subtipo antes de acessar um membro que está disponível somente no subtipo.
Class Plant
Public Property Name As String
End Class
Class CarnivorousPlant
Inherits Plant
Public Property TrapType As String
End Class
Sub Cast()
Dim plants() As Plant = {
New CarnivorousPlant With {.Name = "Venus Fly Trap", .TrapType = "Snap Trap"},
New CarnivorousPlant With {.Name = "Pitcher Plant", .TrapType = "Pitfall Trap"},
New CarnivorousPlant With {.Name = "Sundew", .TrapType = "Flypaper Trap"},
New CarnivorousPlant With {.Name = "Waterwheel Plant", .TrapType = "Snap Trap"}}
Dim query = From plant As CarnivorousPlant In plants
Where plant.TrapType = "Snap Trap"
Select plant
Dim sb As New System.Text.StringBuilder()
For Each plant In query
sb.AppendLine(plant.Name)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Venus Fly Trap
' Waterwheel Plant
End Sub
class Plant
{
public string Name { get; set; }
}
class CarnivorousPlant : Plant
{
public string TrapType { get; set; }
}
static void Cast()
{
Plant[] plants = new Plant[] {
new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }
};
var query = from CarnivorousPlant cPlant in plants
where cPlant.TrapType == "Snap Trap"
select cPlant;
foreach (Plant plant in query)
Console.WriteLine(plant.Name);
/* This code produces the following output:
Venus Fly Trap
Waterwheel Plant
*/
}
Como consultar um ArrayList com LINQ
Cláusula from (Referência de C#)