Sign Up Form

Sign Up

What is the difference between Select and SelectMany in LINQ?

303 166 point-admin
  • 0

In LINQ (Language Integrated Query) in C#, both Select and SelectMany are used to project collections, but they behave quite differently in terms of handling data.

1. Select

Select is used to project each element in a collection into another form, transforming the data while preserving the structure of the original collection. It applies a function to each element, but each resulting element remains in its own sub-collection.

Example:

csharpCopy codeList<string> words = new List<string> { "Hello", "World" };
var result = words.Select(word => word.ToUpper());

foreach (var item in result)
{
    Console.WriteLine(item);  // Output: HELLO, WORLD
}

2. SelectMany

SelectMany, on the other hand, is used when you want to flatten nested collections. It projects each element, but instead of preserving the structure, it combines all sub-collections into a single sequence.

Example:

csharpCopy codeList<List<int>> numbers = new List<List<int>> { new List<int> { 1, 2 }, new List<int> { 3, 4 } };
var flattened = numbers.SelectMany(numList => numList);

foreach (var num in flattened)
{
    Console.WriteLine(num);  // Output: 1, 2, 3, 4
}

Key Differences:

  • Select keeps nested collections intact, preserving the original structure.
  • SelectMany flattens the collections, creating a single sequence from multiple collections.

When to Use Which:

  • Use Select when you’re transforming each element individually.
  • Use SelectMany when you’re working with collections of collections and want to collapse them into a single sequence.

Conclusion:

In summary, Select transforms elements while maintaining the collection hierarchy, whereas SelectMany flattens collections, useful for scenarios where you’re dealing with nested data and want a simple list of results.

  • Post Tags:
  • Posted In:
  • C#

Leave a Reply

Your email address will not be published.