using System; using System.Collections.Generic; using System.Linq; namespace S7Explorer { /// /// Extensiones LINQ para funcionalidades específicas de la aplicación /// public static class LinqExtensions { /// /// Cuenta elementos en una colección que cumplen un predicado /// public static int Count(this IEnumerable source, Func predicate) { if (source == null) return 0; return source.Where(predicate).Count(); } /// /// Verifica si una colección contiene al menos un elemento /// public static bool Any(this IEnumerable source) { if (source == null) return false; return source.Any(item => true); } /// /// Verifica si una colección contiene al menos un elemento que cumpla un predicado /// public static bool Any(this IEnumerable source, Func predicate) { if (source == null) return false; using (var enumerator = source.GetEnumerator()) { while (enumerator.MoveNext()) { if (predicate(enumerator.Current)) return true; } } return false; } /// /// Selecciona elementos de una colección que cumplen un predicado /// public static IEnumerable Where(this IEnumerable source, Func predicate) { if (source == null) yield break; foreach (var item in source) { if (predicate(item)) yield return item; } } } }