Bird
Raised Fist0
C Sharp (C#)programming~10 mins

Select clause projection in C Sharp (C#) - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to select the names from the list of people.

C Sharp (C#)
var names = people.Select(person => person.[1]);
Drag options to blanks, or click blank then click option'
ALength
BAge
CToString()
DName
Attempts:
3 left
💡 Hint
Common Mistakes
Using Age instead of Name will select numbers, not names.
Using ToString() may not return just the name.
2fill in blank
medium

Complete the code to select the ages from the list of people.

C Sharp (C#)
var ages = people.Select(person => person.[1]);
Drag options to blanks, or click blank then click option'
AAge
BName
CHeight
DWeight
Attempts:
3 left
💡 Hint
Common Mistakes
Selecting Name instead of Age will give names, not ages.
Selecting Height or Weight will give unrelated data.
3fill in blank
hard

Fix the error in the code to select the uppercase names.

C Sharp (C#)
var upperNames = people.Select(person => person.Name.[1]());
Drag options to blanks, or click blank then click option'
AToUpper
Btolower
Ctoupper
DUpperCase
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase method names like tolower or toupper causes errors.
UpperCase is not a valid method in C#.
4fill in blank
hard

Fill both blanks to select the first letter of each person's name and convert it to lowercase.

C Sharp (C#)
var firstLetters = people.Select(person => person.Name[1]0[2].ToString().ToLower());
Drag options to blanks, or click blank then click option'
A[
B]
C.
D()
Attempts:
3 left
💡 Hint
Common Mistakes
Using parentheses instead of brackets causes errors.
Forgetting the closing bracket causes syntax errors.
5fill in blank
hard

Fill all three blanks to select a new object with uppercase name and age doubled.

C Sharp (C#)
var result = people.Select(person => new { Name = person.Name.[1](), Age = person.[2] * [3] });
Drag options to blanks, or click blank then click option'
AToUpper
BAge
C2
DName
Attempts:
3 left
💡 Hint
Common Mistakes
Using Name instead of Age for multiplication causes errors.
Forgetting parentheses after ToUpper causes errors.

Practice

(1/5)
1. What does the select clause do in a LINQ query in C#?
easy
A. It groups the data by a key.
B. It filters the data based on a condition.
C. It sorts the data in ascending order.
D. It chooses and shapes the data to return from the query.

Solution

  1. Step 1: Understand the role of select in LINQ

    The select clause defines what data to return from the query, shaping the output.
  2. Step 2: Differentiate from other clauses

    Filtering is done by where, sorting by orderby, grouping by group by. Only select shapes the output.
  3. Final Answer:

    It chooses and shapes the data to return from the query. -> Option D
  4. Quick Check:

    Select clause = shapes output [OK]
Hint: Select clause shapes output data, not filters or sorts [OK]
Common Mistakes:
  • Confusing select with where clause
  • Thinking select sorts data
  • Mixing select with group by
2. Which of the following is the correct syntax for a LINQ query using select to get only the names from a list of Person objects?
easy
A. var names = from p in people select p.Name;
B. var names = from p in people where p.Name;
C. var names = from p in people orderby p.Name select p;
D. var names = from p in people group p by p.Name;

Solution

  1. Step 1: Identify correct select syntax

    The correct syntax to project only the Name property is select p.Name.
  2. Step 2: Check other options for errors

    var names = from p in people where p.Name; uses where incorrectly without a condition. var names = from p in people orderby p.Name select p; selects whole object, not just names. var names = from p in people group p by p.Name; groups data, not selects.
  3. Final Answer:

    var names = from p in people select p.Name; -> Option A
  4. Quick Check:

    Select projects properties correctly [OK]
Hint: Select clause syntax: from x in y select x.Property [OK]
Common Mistakes:
  • Using where without condition
  • Selecting whole object instead of property
  • Confusing group by with select
3. What is the output of this code?
var numbers = new[] {1, 2, 3};
var result = from n in numbers select n * 2;
foreach(var r in result) Console.Write(r + " ");
medium
A. 1 2 3
B. 3 4 5
C. 2 4 6
D. Syntax error

Solution

  1. Step 1: Understand the select projection

    The query multiplies each number by 2, so 1 becomes 2, 2 becomes 4, 3 becomes 6.
  2. Step 2: Trace the output loop

    The foreach prints each doubled number followed by a space: "2 4 6 "
  3. Final Answer:

    2 4 6 -> Option C
  4. Quick Check:

    Select doubles numbers = 2 4 6 [OK]
Hint: Select transforms each item; multiply 1,2,3 by 2 = 2,4,6 [OK]
Common Mistakes:
  • Thinking select filters instead of transforms
  • Expecting original numbers
  • Confusing output format
4. Identify the error in this LINQ query:
var people = new List<Person>();
var names = from p in people select p.Name.ToUpper;
medium
A. select clause must come before from clause.
B. Missing parentheses after ToUpper method call.
C. List<Person> cannot be queried with LINQ.
D. Cannot select Name property directly.

Solution

  1. Step 1: Check method usage in select

    ToUpper is a method and requires parentheses: ToUpper().
  2. Step 2: Validate other options

    Cannot select Name property directly. is wrong because selecting Name is valid. List<Person> cannot be queried with LINQ. is wrong because List supports LINQ. select clause must come before from clause. is wrong because from must come first.
  3. Final Answer:

    Missing parentheses after ToUpper method call. -> Option B
  4. Quick Check:

    Method calls need () [OK]
Hint: Method calls need parentheses, e.g., ToUpper() [OK]
Common Mistakes:
  • Forgetting () after method names
  • Misordering LINQ clauses
  • Thinking List can't use LINQ
5. Given a list of products with properties Name and Price, how would you use a LINQ select clause to create a new list of anonymous objects containing only Name and a discounted price (10% off)?
hard
A. var discounted = from p in products select new { p.Name, DiscountedPrice = p.Price * 0.9 };
B. var discounted = from p in products select p.Name, p.Price * 0.9;
C. var discounted = from p in products where p.Price > 0.9 select p.Name;
D. var discounted = from p in products select new List { p.Name, p.Price * 0.9 };

Solution

  1. Step 1: Understand anonymous object creation in select

    To create new shaped data, use new { } with property assignments inside select.
  2. Step 2: Check each option's correctness

    var discounted = from p in products select new { p.Name, DiscountedPrice = p.Price * 0.9 }; correctly creates anonymous objects with Name and discounted price. var discounted = from p in products select p.Name, p.Price * 0.9; syntax is invalid (multiple values without new). var discounted = from p in products where p.Price > 0.9 select p.Name; filters but does not create discounted price. var discounted = from p in products select new List { p.Name, p.Price * 0.9 }; tries to create a List incorrectly.
  3. Final Answer:

    var discounted = from p in products select new { p.Name, DiscountedPrice = p.Price * 0.9 }; -> Option A
  4. Quick Check:

    Select new anonymous objects with discounted price [OK]
Hint: Use new { } in select to create shaped objects [OK]
Common Mistakes:
  • Trying to select multiple values without new
  • Using where instead of select for projection
  • Incorrect anonymous object syntax