Kaynağa Gözat

FirstOrDefault 扩展

LTCat 2 hafta önce
ebeveyn
işleme
794d1c1c79
1 değiştirilmiş dosya ile 17 ekleme ve 0 silme
  1. 17 0
      Shared/Extensions/EnumerableExtensions.cs

+ 17 - 0
Shared/Extensions/EnumerableExtensions.cs

@@ -1,6 +1,23 @@
 namespace MeloongCore.Extensions;
 public static class EnumerableExtensions {
 
+    #region 查找
+
+    /// <summary>
+    /// 按优先级依次查找,返回首个有匹配结果的条件所匹配的第一个元素。
+    /// 所有条件均无匹配时返回 default。每尝试一个条件都会重新枚举序列。
+    /// </summary>
+    public static TSource? FirstOrDefault<TSource>(this IEnumerable<TSource> source, params Func<TSource, bool>[] predicates) {
+        foreach (var predicate in predicates) {
+            foreach (var item in source) {
+                if (predicate(item)) return item;
+            }
+        }
+        return default;
+    }
+
+    #endregion
+
     #region 去重
 
     /// <summary>