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

First, Single, and their OrDefault variants in C Sharp (C#) - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
LINQ Mastery: First and Single
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of First() vs FirstOrDefault()
What is the output of the following C# code?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        int[] numbers = { 2, 4, 6, 8 };
        int first = numbers.First();
        int firstOrDefault = numbers.FirstOrDefault();
        Console.WriteLine($"{first} {firstOrDefault}");
    }
}
A2 2
B0 0
C2 0
DCompilation error
Attempts:
2 left
💡 Hint
First() returns the first element; FirstOrDefault() returns first or default if none.
Predict Output
intermediate
2:00remaining
Behavior of Single() with multiple matches
What happens when you run this C# code?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        int[] numbers = { 1, 2, 2, 3 };
        int single = numbers.Single(x => x == 2);
        Console.WriteLine(single);
    }
}
ACompilation error
BInvalidOperationException
C0
D2
Attempts:
2 left
💡 Hint
Single() expects exactly one matching element.
Predict Output
advanced
2:00remaining
Output of SingleOrDefault() with no matches
What is the output of this C# program?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        int[] numbers = { 1, 3, 5 };
        int result = numbers.SingleOrDefault(x => x == 2);
        Console.WriteLine(result);
    }
}
A2
BInvalidOperationException
CCompilation error
D0
Attempts:
2 left
💡 Hint
SingleOrDefault returns default if no element matches.
Predict Output
advanced
2:00remaining
Difference between FirstOrDefault() and SingleOrDefault() with multiple matches
What is the output of this C# code?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        int[] numbers = { 5, 5, 5 };
        int firstOrDefault = numbers.FirstOrDefault(x => x == 5);
        Console.WriteLine(firstOrDefault);
        int singleOrDefault = numbers.SingleOrDefault(x => x == 5);
    }
}
A5 InvalidOperationException
B5 0
CCompilation error
D5 5
Attempts:
2 left
💡 Hint
SingleOrDefault throws if more than one match exists.
🧠 Conceptual
expert
2:00remaining
Choosing between First() and Single() in LINQ queries
Which statement is TRUE about using First() and Single() in C# LINQ queries?
ASingle() returns the first matching element without checking for others.
BFirst() throws an exception if more than one element matches the condition.
CSingle() throws an exception if zero or more than one element matches the condition.
DFirst() returns default value if no elements match the condition.
Attempts:
2 left
💡 Hint
Think about how Single() enforces uniqueness.

Practice

(1/5)
1.

Which method will throw an exception if the collection does not have exactly one matching element?

First(), FirstOrDefault(), Single(), SingleOrDefault()
easy
A. SingleOrDefault()
B. First()
C. FirstOrDefault()
D. Single()

Solution

  1. Step 1: Understand Single() behavior

    Single() expects exactly one matching element and throws if there are zero or more than one.
  2. Step 2: Compare with other methods

    First() and FirstOrDefault() do not throw if multiple elements exist; SingleOrDefault() throws only if multiple elements exist but returns default if none.
  3. Final Answer:

    Single() -> Option D
  4. Quick Check:

    Throws on multiple matches = Single() [OK]
Hint: Single() throws if more than one match exists [OK]
Common Mistakes:
  • Confusing Single() with First() which returns first match
  • Thinking FirstOrDefault() throws on multiple matches
  • Assuming SingleOrDefault() never throws
2.

Which of the following is the correct syntax to get the first element or default from a list numbers?

var result = numbers._____();
easy
A. Single
B. FirstOrDefault
C. First
D. SingleOrDefault

Solution

  1. Step 1: Identify method for first or default

    FirstOrDefault() returns the first element or default if none found.
  2. Step 2: Check syntax correctness

    numbers.FirstOrDefault() is valid syntax to get first or default.
  3. Final Answer:

    FirstOrDefault -> Option B
  4. Quick Check:

    FirstOrDefault() syntax correct for first or default [OK]
Hint: Use FirstOrDefault() to safely get first or default [OK]
Common Mistakes:
  • Using Single() which throws if multiple elements
  • Using First() which throws if empty
  • Using SingleOrDefault() which expects single element
3.

What will be the output of this code?

var list = new List<int> { 5, 10, 15 };
var result = list.SingleOrDefault(x => x == 10);
Console.WriteLine(result);
medium
A. 10
B. 0
C. Throws exception
D. null

Solution

  1. Step 1: Understand SingleOrDefault with predicate

    SingleOrDefault returns the only element matching predicate or default if none, throws if multiple.
  2. Step 2: Check list and predicate

    List has one element equal to 10, so SingleOrDefault returns 10.
  3. Final Answer:

    10 -> Option A
  4. Quick Check:

    SingleOrDefault returns single matching element = 10 [OK]
Hint: SingleOrDefault returns single match or default, throws if many [OK]
Common Mistakes:
  • Expecting 0 as default when element exists
  • Thinking it throws because of multiple elements in list
  • Confusing with FirstOrDefault behavior
4.

Identify the error in this code snippet:

var items = new List<string> { "apple", "banana", "apple" };
var singleItem = items.Single(x => x == "apple");
Console.WriteLine(singleItem);
medium
A. Returns "apple" without error
B. Returns null because of duplicates
C. Throws InvalidOperationException due to multiple matches
D. Syntax error in lambda expression

Solution

  1. Step 1: Analyze Single() with multiple matches

    Single() throws InvalidOperationException if more than one element matches the predicate.
  2. Step 2: Check list contents

    List has two "apple" strings, so Single() throws exception.
  3. Final Answer:

    Throws InvalidOperationException due to multiple matches -> Option C
  4. Quick Check:

    Single() throws on multiple matches [OK]
Hint: Single() throws if more than one match found [OK]
Common Mistakes:
  • Expecting Single() to return first match
  • Thinking it returns null on duplicates
  • Assuming syntax error in lambda
5.

You have a list of users and want to get the only user with the username "admin" or null if none exists. Which method should you use to avoid exceptions if there are no or multiple admins?

hard
A. FirstOrDefault()
B. SingleOrDefault() with try-catch
C. Single()
D. First()

Solution

  1. Step 1: Understand requirements

    We want the only user named "admin" or null if none, but avoid exceptions if multiple exist.
  2. Step 2: Evaluate methods

    SingleOrDefault() throws if multiple matches, so risky. FirstOrDefault() returns first or null safely even if multiple exist.
  3. Final Answer:

    FirstOrDefault() -> Option A
  4. Quick Check:

    FirstOrDefault() safely returns first or null without exceptions [OK]
Hint: Use FirstOrDefault() to avoid exceptions on multiple matches [OK]
Common Mistakes:
  • Using SingleOrDefault() which throws on multiple matches
  • Using Single() which throws on zero or multiple matches
  • Using First() which throws if none found