Ver código fonte

FirstOrDefault 扩展

LTCat 4 semanas atrás
pai
commit
794d1c1c79
1 arquivos alterados com 17 adições e 0 exclusões
  1. 17 0
      Shared/Extensions/EnumerableExtensions.cs

+ 17 - 0
Shared/Extensions/EnumerableExtensions.cs

@@ -1,6 +1,23 @@
 namespace MeloongCore.Extensions;
 namespace MeloongCore.Extensions;
 public static class EnumerableExtensions {
 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 去重
     #region 去重
 
 
     /// <summary>
     /// <summary>