Single

Input: IEnumerable<TSource>
Optional lambda expression:TSource => bool

To avoid an exception, Single requires exactly one matching element;

SingleOrDefault requires one or zero matching elements:


using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] numbers = { 1, 2, 3, 4, 5 };

        int v = numbers.Single(n => n % 3 == 0);
        v = numbers.Single(n => n % 2 == 0);

        Console.WriteLine(v);
        v = numbers.Single(n => n > 10);
        v = numbers.SingleOrDefault(n => n > 10);
        v = numbers.SingleOrDefault(n => n % 2 == 0);  
        Console.WriteLine(v);
    }
}

The output:


Unhandled Exception: System.InvalidOperationException: Sequence contains more than one matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at Program.Main() in c:\g\Program.cs:line 13
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.