Any
namespace System.Linq { public static class Enumerable { public static bool Any<TSource>(this IEnumerable<TSource> source) { if (source == null) throw Error.ArgumentNull("source"); using (IEnumerator<TSource> e = source.GetEnumerator()) { if (e.MoveNext()) return true; } return false; } public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { if (source == null) throw Error.ArgumentNull("source"); if (predicate == null) throw Error.ArgumentNull("predicate"); foreach (TSource element in source) { if (predicate(element)) return true; } return false; }
public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source) { if (source == null) throw Error.ArgumentNull("source"); IList<TSource> list = source as IList<TSource>; if (list != null) { if (list.Count > 0) return list[0]; } else { using (IEnumerator<TSource> e = source.GetEnumerator()) { if (e.MoveNext()) return e.Current; } } return default(TSource); } public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { if (source == null) throw Error.ArgumentNull("source"); if (predicate == null) throw Error.ArgumentNull("predicate"); foreach (TSource element in source) { if (predicate(element)) return element; } return default(TSource); } } }
改进Any
public static class EnumerableExtensions { #region Any public static bool HasAny<TSource>(this IEnumerable<TSource> source) { if (source == null) { return false; } using (IEnumerator<TSource> e = source.GetEnumerator()) { if (e.MoveNext()) return true; } return false; } public static bool HasAny<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { if (source == null || predicate == null) { return false; } foreach (var item in source) { if (predicate(item)) return true; } return false; } #endregion /// <summary> /// 遍历列表时不用再判断列表或数组是否为null /// eg: foreach (var item in list.CheckNull()) { } /// </summary> public static IEnumerable<T> CheckNull<T>(this IEnumerable<T> list) { return list == null ? new List<T>(0) : list; } }

浙公网安备 33010602011771号