Sintaxe:
1. Se você deseja criar um dicionário de acordo com o seletor de chave especificado e as funções do seletor de elemento da fonte de dados fornecida, sobrecarregue o seguinte método:
Parâmetros:
-
- fonte : Source pode ser um IEnumerable (lista) no qual o dicionário é criado a partir desta fonte.
- seletor de chave : Esta é uma função que é usada para obter a chave de cada elemento.
- ElementoSeletor: Esta é uma função que é usada para obter o elemento.
- TSource : Este é o parâmetro de tipo que especifica o tipo da fonte de dados.
- TKey: Este é o parâmetro de tipo que especifica o tipo da chave.
- T Elemento : Este é o parâmetro de tipo que especifica o tipo de elemento.
2. Se você deseja criar um dicionário de acordo com a função de seletor de chave especificada da fonte de dados fornecida, sobrecarregue o seguinte método:
Parâmetros:
-
- fonte : Source pode ser um IEnumerable (lista) no qual o dicionário é criado a partir desta fonte.
- seletor de chave : Esta é uma função que é usada para obter a chave de cada elemento.
- Fonte: Isso se refere ao tipo da fonte de dados.
- TKey : Especifica o tipo de chave.
Exemplo 1: Seletor de chave especificado e função do seletor de elemento
Crie uma lista com o tipo “Account” que contenha quatro atributos (Acc_ID, Acc_Name, Industry, Revenue) com cinco registros.
1. Crie um dicionário da lista anterior com a chave como Acc_ID e Valor como Acc_Name.
2. Crie um dicionário da lista anterior com a chave Acc_Name e Value como Revenue.
usando System.Linq ;
usando System.Collections.Generic ;
aula Informação da conta
{
público estático vazio Principal ( )
{
// Cria lista do tipo - Account.
Detalhes da lista = novo Lista ( ) ;
// Adiciona 5 registros à lista.
detalhes . Adicionar ( novo Conta { Acc_ID = 1 , Acc_Name = 'Linux' , Indústria = 'Educação' ,Receita = 2500 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 2 , Acc_Name = 'Pitão' , Indústria = 'Bootcamp' ,Receita = 10000 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 3 , Acc_Name = 'Java' , Indústria = 'Educação' ,Receita = 500 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 4 , Acc_Name = '.LÍQUIDO' , Indústria = 'Treinamento' ,Receita = 2080 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 5 , Acc_Name = 'Oráculo' , Indústria = 'Trabalho' ,Receita = 2090 } ) ;
// Cria um dicionário da lista acima com chave como Acc_ID e valor como Acc_Name
Console . WriteLine ( ' ----Chave como Acc_ID e Valor como Acc_Name----' ) ;
Dicionário contas_dict1 = detalhes . ParaDicionário ( j => j . Acc_ID , j => j . Acc_Name ) ;
para cada ( KeyValuePair i em contas_dict1 )
{
Console . WriteLine ( 'ID da conta:' + eu . Chave + ' Nome da conta :' + eu . Valor ) ;
}
// Crie um dicionário da lista acima com chave como Acc_Name e valor como receita
Console . WriteLine ( ' ----Chave como Acc_Name e Valor como Receita----' ) ;
Contas do dicionário_dict2 = detalhes . ParaDicionário ( eu => eu . Acc_Name , eu => eu . Receita ) ;
para cada ( KeyValuePair k em contas_dict2 )
{
Console . WriteLine ( 'Nome da conta :' + k . Chave + ' Conta-Receita :' + k . Valor ) ;
}
}
}
// Cria classe nomeada - Conta com quatro atributos
público aula Conta
{
público int Acc_ID { pegar ; definir ; }
público corda Acc_Name { pegar ; definir ; }
público corda Indústria { pegar ; definir ; }
público int Receita { pegar ; definir ; }
}
Saída:
Explicação:
1. Crie uma classe chamada “Account” com quatro atributos.
2. Na classe principal, crie uma lista do tipo “Conta” e insira cinco registros nela.
3. Crie um dicionário da lista anterior com a chave como Acc_ID e Valor como Acc_Name. Aqui, especificamos o TKey como int e o TElement como string. Dentro do método ToDictionary(), passamos o Acc_ID no keySelector e o Acc_Name no elementSelector. Por fim, usamos o loop “foreach” para iterar o dicionário e retornar as chaves e valores usando as propriedades de chave e valor.
4. Crie um dicionário da lista anterior com a chave Acc_Name e o valor como Revenue. Aqui, especificamos o TKey como string e o TElement como int. Dentro do método ToDictionary(), passamos o Acc_Name no keySelector e o Revenue no elementSelector. Por fim, usamos o loop “foreach” para iterar o dicionário e retornar as chaves e valores usando as propriedades de chave e valor.
Exemplo 2: seletor de chave especificado
Use o código anterior e crie um dicionário da lista anterior com a chave como Acc_ID.
usando Sistema ;usando System.Linq ;
usando System.Collections.Generic ;
aula Informação da conta
{
público estático vazio Principal ( )
{
// Cria lista do tipo - Account.
Detalhes da lista = novo Lista ( ) ;
// Adiciona 5 registros à lista.
detalhes . Adicionar ( novo Conta { Acc_ID = 1 , Acc_Name = 'Linux' , Indústria = 'Educação' ,Receita = 2500 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 2 , Acc_Name = 'Pitão' , Indústria = 'Bootcamp' ,Receita = 10000 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 3 , Acc_Name = 'Java' , Indústria = 'Educação' ,Receita = 500 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 4 , Acc_Name = '.LÍQUIDO' , Indústria = 'Treinamento' ,Receita = 2080 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 5 , Acc_Name = 'Oráculo' , Indústria = 'Trabalho' ,Receita = 2090 } ) ;
// Crie um dicionário da lista acima com a chave como Acc_ID.
Dicionário contas_dict = detalhes . ParaDicionário ( j => j . Acc_ID ) ;
para cada ( KeyValuePair i em contas_dict )
{
Console . WriteLine ( 'Chave:' + eu . Chave + '--> Nome da conta :' + eu . Valor . Acc_Name
+ ' Conta-Indústria :' + eu . Valor . Indústria
+ ' Conta-Receita :' + eu . Valor . Receita ) ;
}
}
}
// Cria classe nomeada - Conta com quatro atributos
público aula Conta
{
público int Acc_ID { pegar ; definir ; }
público corda Acc_Name { pegar ; definir ; }
público corda Indústria { pegar ; definir ; }
público int Receita { pegar ; definir ; }
}
Saída:
Explicação:
Aqui, criamos um dicionário com a chave como Acc_ID. Isso funciona como a chave para cada registro no dicionário que criamos a partir da lista. Depois disso, usamos o loop “foreach” para obter as chaves e valores (com atributos) usando as propriedades de chave e valor.
Exemplo 3: chaves duplicadas – ArgumentException
Crie uma lista com dois registros e tente convertê-la em um dicionário com o Acc_ID como chave.
usando Sistema ;usando System.Linq ;
usando System.Collections.Generic ;
aula Informação da conta
{
público estático vazio Principal ( )
{
// Cria lista do tipo - Conta.
Detalhes da lista = novo Lista ( ) ;
// Adiciona 2 registros à lista.
detalhes . Adicionar ( novo Conta { Acc_ID = 1 , Acc_Name = 'Linux' , Indústria = 'Educação' ,Receita = 2500 } ) ;
detalhes . Adicionar ( novo Conta { Acc_ID = 1 , Acc_Name = 'Pitão' , Indústria = 'Bootcamp' ,Receita = 10000 } ) ;
// Tente criar um Dicionário da Lista acima com Chave como Acc_ID.
Dicionário contas_dict = detalhes . ParaDicionário ( j => j . Acc_ID ) ;
}
}
// Cria classe nomeada - Conta com quatro atributos
público aula Conta
{
público int Acc_ID { pegar ; definir ; }
público corda Acc_Name { pegar ; definir ; }
público corda Indústria { pegar ; definir ; }
público int Receita { pegar ; definir ; }
}
Exceção:
Uma exceção não tratada que é System.ArgumentException é gerada porque a chave é duplicada (1) em ambos os Acc_IDs.
Exemplo 4: Fonte Nula – ArgumentNullException
Crie uma lista com o tipo “Conta” e atribua null a ela. Tente criar um dicionário da lista anterior com a chave como Acc_ID.
usando Sistema ;usando System.Linq ;
usando System.Collections.Generic ;
aula Informação da conta
{
público estático vazio Principal ( )
{
// Cria uma lista do tipo - Account e atribui null a ela.
Detalhes da lista = nulo ;
// Tente criar um Dicionário da Lista acima com Chave como Acc_ID.
Dicionário contas_dict = detalhes . ParaDicionário ( j => j . Acc_ID ) ;
}
}
// Cria classe nomeada - Conta com quatro atributos
público aula Conta
{
público int Acc_ID { pegar ; definir ; }
público corda Acc_Name { pegar ; definir ; }
público corda Indústria { pegar ; definir ; }
público int Receita { pegar ; definir ; }
}
Exceção:
Uma exceção não tratada que é System.ArgumentNullException é gerada porque a lista é nula.
Conclusão
Aprendemos como criar um dicionário a partir do IEnumerable (aqui é list) usando o método ToDictionary() em C# LINQ. Esse método pode ser sobrecarregado de duas maneiras. Discutimos ambos os métodos com exemplos. Além disso, aprendemos os dois casos de exceção gerados por esse método quando a fonte de dados/keySelector/elementSelector é nula e as chaves são duplicadas.