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;
}
}
}
}