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

First, Single, and their OrDefault variants in C Sharp (C#) - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What does the First() method do in C#?
It returns the first element of a sequence. If the sequence is empty, it throws an exception.
Click to reveal answer
beginner
How does FirstOrDefault() differ from First()?
FirstOrDefault() returns the first element if found; otherwise, it returns the default value for the type (e.g., null for reference types, 0 for integers) instead of throwing an exception.
Click to reveal answer
intermediate
What is the key difference between Single() and First()?
Single() expects exactly one element in the sequence and throws an exception if there are zero or more than one elements. First() only requires at least one element and returns the first one.
Click to reveal answer
intermediate
When should you use SingleOrDefault()?
Use SingleOrDefault() when you expect zero or one element in the sequence. It returns the single element if found, or the default value if none are found. It throws an exception if more than one element exists.
Click to reveal answer
beginner
What happens if you call Single() on a sequence with multiple elements?
It throws an InvalidOperationException because Single() expects exactly one element, not multiple.
Click to reveal answer
What does FirstOrDefault() return if the sequence is empty?
AReturns the default value for the type
BReturns the first element
CReturns null always
DThrows an exception
Which method throws an exception if the sequence contains more than one element?
ASingle()
BFirst()
CFirstOrDefault()
DSingleOrDefault()
If you want to get the first element but avoid exceptions on empty sequences, which method should you use?
ASingle()
BFirstOrDefault()
CFirst()
DSingleOrDefault()
What will SingleOrDefault() return if the sequence has exactly one element?
AThrows an exception
BReturns default value
CReturns the single element
DReturns the first element
Which method is best when you expect exactly one element and want an exception if zero or multiple elements exist?
ASingleOrDefault()
BFirstOrDefault()
CFirst()
DSingle()
Explain the difference between First() and Single() methods in C#.
Think about how many elements each method expects and what happens if the sequence is empty or has many elements.
You got /4 concepts.
    When would you choose to use FirstOrDefault() or SingleOrDefault()?
    Consider the expected number of elements and how you want to handle empty sequences.
    You got /4 concepts.

      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