Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content
Previous: SelectMany Next: Combined Exercise #2

Combined Exercise #1

As we have already seen in some of the examples, LINQ methods can build on each other. Since many LINQ methods return an IEnumerable<T>, subsequent LINQ methods can be called on the results. For example:

IEnumerable<string> values = new List<string> { "fe", "fi", "fo", "fum" };
// Will return 12
int result = values
    .Select(word => $"{word}-{word}") // { "fe-fe", "fi-fi", ... }
    .Select(phrase => phrase.Length)

In this exercise, combine LINQ method calls together to determine if the second sequence passed into the TestForSquares() method contains the squares of the elements in the first sequence. It should return true if the two sequences have the same number of elements and each element in squares is equal to the square of the corresponding element in numbers.

Combined Exercise 1
using System.Collections.Generic;
using System.Linq;
namespace AllTogether1
public class FullExercise1
// The following method should return true if each element in the squares sequence
// is equal to the square of the corresponding element in the numbers sequence.
// Try to write the entire method using only LINQ method calls, and without writing
// any loops.
public static bool TestForSquares(IEnumerable<int> numbers, IEnumerable<int> squares)
return numbers
// .???().???() ... .???()
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content