Синтаксис:
1. Если вы хотите создать словарь в соответствии с указанными функциями селектора клавиш и селектора элементов из заданного источника данных, перегрузите следующий метод:
Параметры:
-
- источник : Источником может быть IEnumerable (список), в котором словарь создается из этого источника.
- ключселектор : это функция, которая используется для получения ключа от каждого элемента.
- элементселектор: Это функция, которая используется для получения элемента.
- источник : это параметр типа, указывающий тип источника данных.
- TKey: Это параметр типа, который определяет тип ключа.
- ТЕЭлемент : это параметр типа, указывающий тип элемента.
2. Если вы хотите создать словарь в соответствии с указанной функцией выбора ключа из заданного источника данных, перегрузите следующий метод:
Параметры:
-
- источник : Источником может быть IEnumerable (список), в котором словарь создается из этого источника.
- ключселектор : это функция, которая используется для получения ключа от каждого элемента.
- Источник: Это относится к типу источника данных.
- ТКей : указывает тип ключа.
Пример 1: указанный ключевой селектор и функция выбора элемента
Создайте список типа «Учетная запись», который содержит четыре атрибута (Acc_ID, Acc_Name, Industry, Revenue) с пятью записями.
1. Создайте словарь из предыдущего списка с ключом в качестве Acc_ID и значением в качестве Acc_Name.
2. Создайте словарь из предыдущего списка с ключом Acc_Name и значением Revenue.
с использованием System.Linq ;
с использованием System.Collections.Generic ;
сорт Информация Об Учетной Записи
{
публичный статический пустота Основной ( )
{
// Создать Список типа - Счет.
Детали списка '=' новый Список ( ) ;
// Добавляем 5 записей в список.
подробности . Добавлять ( новый Счет { Acc_ID '=' 1 , Acc_Name '=' 'Линукс' , Промышленность '=' 'Образование' ,Доход '=' 2500 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 2 , Acc_Name '=' 'Питон' , Промышленность '=' 'Учебный лагерь' ,Доход '=' 10000 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 3 , Acc_Name '=' 'Джава' , Промышленность '=' 'Образование' ,Доход '=' 500 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 4 , Acc_Name '=' '.СЕТЬ' , Промышленность '=' 'Обучение' ,Доход '=' 2080 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 5 , Acc_Name '=' 'Оракул' , Промышленность '=' 'Работа' ,Доход '=' 2090 } ) ;
// Создать словарь из приведенного выше списка с ключом в качестве Acc_ID и значением в качестве Acc_Name
Консоль . WriteLine ( ' ----Ключ как Acc_ID и значение как Acc_Name----' ) ;
Словарь account_dict1 '=' подробности . ToDictionary ( Дж => Дж . Acc_ID , Дж => Дж . Acc_Name ) ;
для каждого ( KeyValuePair i в account_dict1 )
{
Консоль . WriteLine ( 'Идентификатор учетной записи:' + я . Ключ + ' Имя учетной записи :' + я . Ценить ) ;
}
// Создать словарь из приведенного выше списка с ключом в качестве Acc_Name и значением в качестве дохода
Консоль . WriteLine ( ' ----Key как Acc_Name и Value как Revenue----' ) ;
Словарь account_dict2 '=' подробности . ToDictionary ( л => л . Acc_Name , л => л . Доход ) ;
для каждого ( KeyValuePair k в account_dict2 )
{
Консоль . WriteLine ( 'Имя учетной записи :' + к . Ключ + 'Аккаунт-Доход:' + к . Ценить ) ;
}
}
}
// Создаем класс с именем - Аккаунт с четырьмя атрибутами
публичный сорт Счет
{
публичный инт Acc_ID { получать ; набор ; }
публичный нить Acc_Name { получать ; набор ; }
публичный нить Промышленность { получать ; набор ; }
публичный инт Доход { получать ; набор ; }
}
Выход:
Объяснение:
1. Создайте класс с именем «Учетная запись» с четырьмя атрибутами.
2. В основном классе создайте список типа «Счет» и вставьте в него пять записей.
3. Создайте словарь из предыдущего списка с ключом в качестве Acc_ID и значением в качестве Acc_Name. Здесь мы указываем TKey как int и TElement как строку. Внутри метода ToDictionary() мы передаем Acc_ID в keySelector и Acc_Name в elementSelector. Наконец, мы используем цикл foreach для итерации словаря и возврата ключей и значений с использованием свойств ключа и значения.
4. Создайте словарь из предыдущего списка с ключом Acc_Name и значением Revenue. Здесь мы указываем TKey как строку и TElement как целое число. Внутри метода ToDictionary() мы передаем Acc_Name в keySelector и Revenue в elementSelector. Наконец, мы используем цикл foreach для итерации словаря и возврата ключей и значений с использованием свойств ключа и значения.
Пример 2: Выбор указанного ключа
Используйте предыдущий код и создайте словарь из предыдущего списка с ключом Acc_ID.
с использованием Система ;с использованием System.Linq ;
с использованием System.Collections.Generic ;
сорт Информация Об Учетной Записи
{
публичный статический пустота Основной ( )
{
// Создать Список типа - Счет.
Детали списка '=' новый Список ( ) ;
// Добавляем 5 записей в список.
подробности . Добавлять ( новый Счет { Acc_ID '=' 1 , Acc_Name '=' 'Линукс' , Промышленность '=' 'Образование' ,Доход '=' 2500 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 2 , Acc_Name '=' 'Питон' , Промышленность '=' 'Учебный лагерь' ,Доход '=' 10000 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 3 , Acc_Name '=' 'Джава' , Промышленность '=' 'Образование' ,Доход '=' 500 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 4 , Acc_Name '=' '.СЕТЬ' , Промышленность '=' 'Обучение' ,Доход '=' 2080 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 5 , Acc_Name '=' 'Оракул' , Промышленность '=' 'Работа' ,Доход '=' 2090 } ) ;
// Создать словарь из приведенного выше списка с ключом в качестве Acc_ID.
Словарь account_dict '=' подробности . ToDictionary ( Дж => Дж . Acc_ID ) ;
для каждого ( KeyValuePair i в account_dict )
{
Консоль . WriteLine ( 'Ключ:' + я . Ключ + '--> Имя учетной записи:' + я . Ценить . Acc_Name
+ 'Аккаунт-Индустрия:' + я . Ценить . Промышленность
+ 'Аккаунт-Доход:' + я . Ценить . Доход ) ;
}
}
}
// Создаем класс с именем - Аккаунт с четырьмя атрибутами
публичный сорт Счет
{
публичный инт Acc_ID { получать ; набор ; }
публичный нить Acc_Name { получать ; набор ; }
публичный нить Промышленность { получать ; набор ; }
публичный инт Доход { получать ; набор ; }
}
Выход:
Объяснение:
Здесь мы создаем словарь с ключом Acc_ID. Это действует как ключ для каждой записи в словаре, который мы создали из списка. После этого мы используем цикл foreach для получения ключей и значений (с атрибутами), используя свойства ключа и значения.
Пример 3: Дублирующиеся ключи — ArgumentException
Создайте список с двумя записями и попытайтесь преобразовать его в словарь с Acc_ID в качестве ключа.
с использованием Система ;с использованием System.Linq ;
с использованием System.Collections.Generic ;
сорт Информация Об Учетной Записи
{
публичный статический пустота Основной ( )
{
// Создать Список типа - Счет.
Детали списка '=' новый Список ( ) ;
// Добавляем 2 записи в список.
подробности . Добавлять ( новый Счет { Acc_ID '=' 1 , Acc_Name '=' 'Линукс' , Промышленность '=' 'Образование' ,Доход '=' 2500 } ) ;
подробности . Добавлять ( новый Счет { Acc_ID '=' 1 , Acc_Name '=' 'Питон' , Промышленность '=' 'Учебный лагерь' ,Доход '=' 10000 } ) ;
// Попробуйте создать словарь из приведенного выше списка с ключом в качестве Acc_ID.
Словарь account_dict '=' подробности . ToDictionary ( Дж => Дж . Acc_ID ) ;
}
}
// Создаем класс с именем - Аккаунт с четырьмя атрибутами
публичный сорт Счет
{
публичный инт Acc_ID { получать ; набор ; }
публичный нить Acc_Name { получать ; набор ; }
публичный нить Промышленность { получать ; набор ; }
публичный инт Доход { получать ; набор ; }
}
Исключение:
Возникает необработанное исключение System.ArgumentException, поскольку ключ дублируется (1) в обоих идентификаторах Acc_ID.
Пример 4: Нулевой источник — ArgumentNullException
Создайте список с типом «Учетная запись» и присвойте ему значение null. Попробуйте создать словарь из предыдущего списка с ключом Acc_ID.
с использованием Система ;с использованием System.Linq ;
с использованием System.Collections.Generic ;
сорт Информация Об Учетной Записи
{
публичный статический пустота Основной ( )
{
// Создаем список типа - Account и присваиваем ему значение null.
Детали списка '=' нулевой ;
// Попробуйте создать словарь из приведенного выше списка с ключом в качестве Acc_ID.
Словарь account_dict '=' подробности . ToDictionary ( Дж => Дж . Acc_ID ) ;
}
}
// Создаем класс с именем - Аккаунт с четырьмя атрибутами
публичный сорт Счет
{
публичный инт Acc_ID { получать ; набор ; }
публичный нить Acc_Name { получать ; набор ; }
публичный нить Промышленность { получать ; набор ; }
публичный инт Доход { получать ; набор ; }
}
Исключение:
Возникает необработанное исключение System.ArgumentNullException, поскольку список имеет значение null.
Заключение
Мы научились создавать словарь из IEnumerable (здесь это список) с помощью метода ToDictionary() в C# LINQ. Этот метод можно перегрузить двумя способами. Мы обсудили оба метода с примерами. Кроме того, мы узнали о двух исключительных случаях, которые вызывает этот метод, когда источник данных/keySelector/elementSelector имеет значение null, а ключи дублируются.