Методы реализации дополнительного фильтра в C#

  1. LINQ (интегрированный язык запрос): LINQ можно использовать для фильтрации данных в C#. Используя предложение Where, вы можете применять условия и фильтровать данные из коллекций.

Пример:

var filteredData = sourceData.Where(item => item.Property == value);
  1. Методы расширения. Вы можете создавать методы расширения, чтобы обеспечить функциональность фильтрации для объектов или коллекций. Это позволяет писать краткий и многократно используемый код.

Пример:

public static class FilterExtensions
{
    public static IEnumerable<T> Filter<T>(this IEnumerable<T> source, Func<T, bool> predicate)
    {
        foreach (var item in source)
        {
            if (predicate(item))
            {
                yield return item;
            }
        }
    }
}
// Usage:
var filteredData = sourceData.Filter(item => item.Property == value);
  1. Делегаты. Вы можете использовать делегатов для определения пользовательских фильтров и передачи их в качестве аргументов методам или запросам LINQ.

Пример:

public delegate bool FilterDelegate<T>(T item);
public static IEnumerable<T> Filter<T>(IEnumerable<T> source, FilterDelegate<T> filter)
{
    foreach (var item in source)
    {
        if (filter(item))
        {
            yield return item;
        }
    }
}
// Usage:
var filteredData = Filter(sourceData, item => item.Property == value);