Прочитать на английском

Поделиться через


Enumerable.ToLookup Метод

Определение

Создает универсальный объект Lookup<TKey,TElement> из объекта IEnumerable<T>.

Перегрузки

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Создает словарь Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданными функциями селектора ключа и селектора элемента.

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Создает объект Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданным компаратором и функциями селектора ключа и селектора элемента.

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Создает словарь Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданной функцией селектора ключа и компаратором ключей.

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Создает словарь Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданной функцией селектора ключа.

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Исходный код:
Lookup.cs
Исходный код:
Lookup.cs
Исходный код:
Lookup.cs

Создает словарь Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданными функциями селектора ключа и селектора элемента.

C#
public static System.Linq.ILookup<TKey,TElement> ToLookup<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого функцией keySelector.

TElement

Тип значения, возвращаемого функцией elementSelector.

Параметры

source
IEnumerable<TSource>

Интерфейс IEnumerable<T>, на основе которого создается список Lookup<TKey,TElement>.

keySelector
Func<TSource,TKey>

Функция, извлекающая ключ из каждого элемента.

elementSelector
Func<TSource,TElement>

Функция преобразования для получения результирующего значения каждого элемента.

Возвращаемое значение

Lookup<TKey,TElement>, который содержит значения типа TElement, выбранные из входной последовательности.

Исключения

Параметр source, keySelector или elementSelector имеет значение null.

Примеры

В следующем примере кода показано, как использовать ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) для создания Lookup<TKey,TElement> с помощью функции селектора ключа и функции селектора элементов.

C#
class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
    public long TrackingNumber { get; set; }
}

public static void ToLookupEx1()
{
    // Create a list of Packages.
    List<Package> packages =
        new List<Package>
            { new Package { Company = "Coho Vineyard",
                  Weight = 25.2, TrackingNumber = 89453312L },
              new Package { Company = "Lucerne Publishing",
                  Weight = 18.7, TrackingNumber = 89112755L },
              new Package { Company = "Wingtip Toys",
                  Weight = 6.0, TrackingNumber = 299456122L },
              new Package { Company = "Contoso Pharmaceuticals",
                  Weight = 9.3, TrackingNumber = 670053128L },
              new Package { Company = "Wide World Importers",
                  Weight = 33.8, TrackingNumber = 4665518773L } };

    // Create a Lookup to organize the packages.
    // Use the first character of Company as the key value.
    // Select Company appended to TrackingNumber
    // as the element values of the Lookup.
    ILookup<char, string> lookup =
        packages
        .ToLookup(p => p.Company[0],
                  p => p.Company + " " + p.TrackingNumber);

    // Iterate through each IGrouping in the Lookup.
    foreach (IGrouping<char, string> packageGroup in lookup)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(packageGroup.Key);
        // Iterate through each value in the
        // IGrouping and print its value.
        foreach (string str in packageGroup)
            Console.WriteLine("    {0}", str);
    }
}

/*
 This code produces the following output:

 C
     Coho Vineyard 89453312
     Contoso Pharmaceuticals 670053128
 L
     Lucerne Publishing 89112755
 W
     Wingtip Toys 299456122
     Wide World Importers 4665518773
*/

Комментарии

Метод ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) возвращает словарь Lookup<TKey,TElement>типа "один ко многим", который сопоставляет ключи с коллекциями значений. Отличается Lookup<TKey,TElement> от Dictionary<TKey,TValue>, который выполняет сопоставление ключей с одними значениями.

Для сравнения ключей используется компаратор Default на равенство по умолчанию.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Исходный код:
Lookup.cs
Исходный код:
Lookup.cs
Исходный код:
Lookup.cs

Создает объект Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданным компаратором и функциями селектора ключа и селектора элемента.

C#
public static System.Linq.ILookup<TKey,TElement> ToLookup<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
C#
public static System.Linq.ILookup<TKey,TElement> ToLookup<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого функцией keySelector.

TElement

Тип значения, возвращаемого функцией elementSelector.

Параметры

source
IEnumerable<TSource>

Интерфейс IEnumerable<T>, на основе которого создается список Lookup<TKey,TElement>.

keySelector
Func<TSource,TKey>

Функция, извлекающая ключ из каждого элемента.

elementSelector
Func<TSource,TElement>

Функция преобразования для получения результирующего значения каждого элемента.

comparer
IEqualityComparer<TKey>

Компаратор IEqualityComparer<T>, используемый для сравнения ключей.

Возвращаемое значение

Lookup<TKey,TElement>, который содержит значения типа TElement, выбранные из входной последовательности.

Исключения

Параметр source, keySelector или elementSelector имеет значение null.

Комментарии

Метод ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) возвращает словарь Lookup<TKey,TElement>типа "один ко многим", который сопоставляет ключи с коллекциями значений. Отличается Lookup<TKey,TElement> от Dictionary<TKey,TValue>, который выполняет сопоставление ключей с одними значениями.

Если comparer имеет значение null, для сравнения ключей используется компаратор Default на равенство по умолчанию.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Исходный код:
Lookup.cs
Исходный код:
Lookup.cs
Исходный код:
Lookup.cs

Создает словарь Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданной функцией селектора ключа и компаратором ключей.

C#
public static System.Linq.ILookup<TKey,TSource> ToLookup<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
C#
public static System.Linq.ILookup<TKey,TSource> ToLookup<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого функцией keySelector.

Параметры

source
IEnumerable<TSource>

Интерфейс IEnumerable<T>, на основе которого создается список Lookup<TKey,TElement>.

keySelector
Func<TSource,TKey>

Функция, извлекающая ключ из каждого элемента.

comparer
IEqualityComparer<TKey>

Компаратор IEqualityComparer<T>, используемый для сравнения ключей.

Возвращаемое значение

ILookup<TKey,TSource>

Объект Lookup<TKey,TElement>, содержащий ключи и значения. Значения в каждой группе находятся в том же порядке, что и в source.

Исключения

Параметр source или keySelector имеет значение null.

Комментарии

Метод ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) возвращает словарь Lookup<TKey,TElement>типа "один ко многим", который сопоставляет ключи с коллекциями значений. Объект Lookup<TKey,TElement> отличается от Dictionary<TKey,TValue>, который выполняет сопоставление ключей с одними значениями.

Если comparer имеет значение null, для сравнения ключей используется компаратор Default на равенство по умолчанию.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Исходный код:
Lookup.cs
Исходный код:
Lookup.cs
Исходный код:
Lookup.cs

Создает словарь Lookup<TKey,TElement> из объекта IEnumerable<T> в соответствии с заданной функцией селектора ключа.

C#
public static System.Linq.ILookup<TKey,TSource> ToLookup<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого функцией keySelector.

Параметры

source
IEnumerable<TSource>

Интерфейс IEnumerable<T>, на основе которого создается список Lookup<TKey,TElement>.

keySelector
Func<TSource,TKey>

Функция, извлекающая ключ из каждого элемента.

Возвращаемое значение

ILookup<TKey,TSource>

Объект Lookup<TKey,TElement>, содержащий ключи и значения. Значения в каждой группе находятся в том же порядке, что и в source.

Исключения

Параметр source или keySelector имеет значение null.

Комментарии

Метод ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) возвращает словарь Lookup<TKey,TElement>типа "один ко многим", который сопоставляет ключи с коллекциями значений. Отличается Lookup<TKey,TElement> от Dictionary<TKey,TValue>, который выполняет сопоставление ключей с одними значениями.

Для сравнения ключей используется компаратор Default на равенство по умолчанию.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0