diff --git a/csharp/App/SchneiderMeterDriver/Utils.cs b/csharp/App/SchneiderMeterDriver/Utils.cs new file mode 100644 index 000000000..4b5735a35 --- /dev/null +++ b/csharp/App/SchneiderMeterDriver/Utils.cs @@ -0,0 +1,49 @@ +namespace InnovEnergy.App.SchneiderDriver; + +public static class Utils +{ + public static IEnumerable TryWhere(this IEnumerable src, Func predicate) + { + foreach (var e in src) + { + var ok = false; + + try + { + ok = predicate(e); + } + catch + { + // ignored + } + + if (ok) + yield return e; + } + } + + public static IEnumerable TrySelect(this IEnumerable src, Func map) + { + foreach (var e in src) + { + var ok = false; + var result = default(R); + + try + { + result = map(e); + ok = true; + } + catch + { + // ignored + } + + if (ok) + yield return result!; + } + } + + + +} \ No newline at end of file