using System.Collections.Generic;
public static class Program
public static void Main()
List<Demo> items = new List<Demo> { new Demo{
var result = items.SafeFirstOrDefault();
Console.WriteLine(result?.Code);
public static T SafeFirstOrDefault<T>(this IEnumerable<T> source, Func<T, bool> predicate = null)
? source.FirstOrDefault()
: source.FirstOrDefault(predicate);
public static T? SafeFirstOrDefault2<T>(this IEnumerable<T>? source, Func<T, bool>? predicate = null)
? source.FirstOrDefault()
: source.FirstOrDefault(predicate);
public int Code{set;get;}
public string Message{set;get;}