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