Feedback

C# - Functions verketten

Veröffentlicht von am 03.11.2015
(0 Bewertungen)
Da ich sehr oft Listen auf Grund eines oder mehreren Kriterien ausfiltere, habe ich mir da eine Erleichterungen für das Verketten von Functions geschrieben.
GFU-Schulungen  [Anzeige]

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

namespace System
{
    public static class FuncExtensions
    {
        public enum GroupType
        {
            And,
            Or
        }

        public static Func<T, bool> AndAlso<T>(this Func<T, bool> func1, Func<T, bool> func2)
        {
            if (func1 == null)
                throw new ArgumentNullException(nameof(func1));

            if (func2 == null)
                throw new ArgumentNullException(nameof(func2));

            return a => func1(a) && func2(a);
        }

        public static Func<T, bool> OrElse<T>(this Func<T, bool> func1, Func<T, bool> func2)
        {
            if (func1 == null)
                throw new ArgumentNullException(nameof(func1));

            if (func2 == null)
                throw new ArgumentNullException(nameof(func2));

            return a => func1(a) || func2(a);
        }

        public static Func<T, bool> Grouped<T>(IList<Func<T, bool>> functions, GroupType groupType = GroupType.Or)
        {
            if (functions == null)
                throw new ArgumentNullException(nameof(functions));

            Func<T, bool> result = a => groupType == GroupType.And;

            if (groupType == GroupType.And)
            {
                foreach (var func in functions)
                {
                    result = result.AndAlso(func);
                }
            }

            if (groupType == GroupType.Or)
            {
                foreach (var func in functions)
                {
                    result = result.OrElse(func);
                }
            }

            return result;
        }
    }
}
Abgelegt unter Function, Criteria.

1 Kommentare zum Snippet

Koopakiller schrieb am 03.11.2015:
Ich denke ein Verwendungsbeispiel würde helfen zu verstehen warum deine Methoden einen Vorteil bieten.
 

Logge dich ein, um hier zu kommentieren!