# Single

***

**1. Observable.Single() with Predicate**

```csharp
var numbers = new[] { 1, 2, 3, 4, 5 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single();

Console.WriteLine(singleEvenNumber); // Output: 2
```

**2. Observable.SingleOrDefault() with Predicate**

```csharp
var numbers = new[] { 1, 2, 3, 4, 5 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault();

Console.WriteLine(singleEvenNumberOrDefault); // Output: 2
```

**3. Observable.SingleAsync()**

```csharp
var numbersTask = Task.FromResult(new[] { 1, 2, 3, 4, 5 });

var singleEvenNumber = await numbersTask.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleAsync();

Console.WriteLine(singleEvenNumber); // Output: 2
```

**4. Observable.SingleOrDefaultAsync()**

```csharp
var numbersTask = Task.FromResult(new[] { 1, 2, 3, 4, 5 });

var singleEvenNumberOrDefault = await numbersTask.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefaultAsync();

Console.WriteLine(singleEvenNumberOrDefault); // Output: 2
```

**5. Observable.SingleOrDefault(Func\<TSource, TSource, bool>)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var distinctSingleNumber = numbers.ToObservable()
    .SingleOrDefault((x, y) => x == y);

Console.WriteLine(distinctSingleNumber); // Output: 2
```

**6. Observable.SingleOrDefault(Func\<TSource, TSource, bool>, TSource)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var distinctSingleNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault((x, y) => x == y, -1);

Console.WriteLine(distinctSingleNumberOrDefault); // Output: -1
```

**7. Observable.SingleOrDefault(Func\<TSource, bool>, Func\<TSource, bool>, bool)**

```csharp
var numbers = new[] { 1, 2, 3, 4, 5 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, n => n < 3);

Console.WriteLine(singleEvenNumberOrDefault); // Output: 2
```

**8. Observable.SingleOrDefault(Func\<TSource, bool>, Func\<TSource, bool>, TSource)**

```csharp
var numbers = new[] { 1, 2, 3, 4, 5 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, n => n < 3, -1);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**9. Observable.SingleOrDefault(Func\<TSource, bool>, TSource)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, -1);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**10. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Throws ArgumentException
```

**11. Observable.SingleAsync(Func\<TSource, bool>)**

```csharp
var numbersTask = Task.FromResult(new[] { 1, 2, 3, 4, 5 });

var singleEvenNumber = await numbersTask.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleAsync(n => n % 2 == 0);

Console.WriteLine(singleEvenNumber); // Output: 2
```

**12. Observable.SingleOrDefaultAsync(Func\<TSource, bool>)**

```csharp
var numbersTask = Task.FromResult(new[] { 1, 2, 3, 4, 5 });

var singleEvenNumberOrDefault = await numbersTask.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefaultAsync(n => n % 2 == 0);

Console.WriteLine(singleEvenNumberOrDefault); // Output: 2
```

**13. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**14. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**15. Observable.SingleOrDefault(Func\<TSource, bool>, Func, TSource)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException(), -1);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**16. Observable.SingleOrDefault(Func\<TSource, bool>, Func, TSource)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException(), -1);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**17. Observable.Single(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumber); // Output: 2
```

**18. Observable.SingleOrDefault(Func\<TSource, bool>, Func, bool)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException(), false);

Console.WriteLine(singleEvenNumberOrDefault); // Output: false
```

**19. Observable.SingleOrDefault(Func\<TSource, bool>, Func, bool)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException(), false);

Console.WriteLine(singleEvenNumberOrDefault); // Output: false
```

**20. Observable.Single(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumber); // Output: 2
```

**21. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**22. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**23. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**24. Observable.Single(Func\<TSource, bool>, bool, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single(n => n % 2 == 0, false, ex => new ArgumentException());

Console.WriteLine(singleEvenNumber); // Output: 2
```

**25. Observable.SingleOrDefault(Func\<TSource, bool>, bool, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, false, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: false
```

**26. Observable.SingleOrDefault(Func\<TSource, bool>, bool, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, false, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: false
```

**27. Observable.Single(Func\<TSource, bool>, TSource, bool)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single(n => n % 2 == 0, -1, false);

Console.WriteLine(singleEvenNumber); // Output: 2
```

**28. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, bool)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, false);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**29. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, bool)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, false);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**30. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, bool)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, false);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**31. Observable.SingleOrDefault(Func\<TSource, bool>, TSource)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1);

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**32. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**33. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**34. Observable.Single(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumber); // Output: 2
```

**35. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**36. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**37. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**38. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**39. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**40. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**41. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**42. Observable.Single(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumber = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .Single(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumber); // Output: 2
```

**43. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**44. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**45. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**46. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**47. Observable.SingleOrDefault(Func\<TSource, bool>, TSource, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, -1, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**48. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2, 2, 3, 3, 4 };

var singleEvenNumberOrDefault = numbers.ToObservable()
    .Where(n => n % 2 == 0)
    .SingleOrDefault(n => n % 2 == 0, ex => new ArgumentException());

Console.WriteLine(singleEvenNumberOrDefault); // Output: -1
```

**49. Observable.SingleOrDefault(Func\<TSource, bool>, Func)**

```csharp
var numbers = new[] { 1, 2,

```
