fix: trywhere
This commit is contained in:
parent
f70e3fe180
commit
493b76e0ed
|
@ -0,0 +1,49 @@
|
||||||
|
namespace InnovEnergy.App.SchneiderDriver;
|
||||||
|
|
||||||
|
public static class Utils
|
||||||
|
{
|
||||||
|
public static IEnumerable<T> TryWhere<T>(this IEnumerable<T> src, Func<T, Boolean> predicate)
|
||||||
|
{
|
||||||
|
foreach (var e in src)
|
||||||
|
{
|
||||||
|
var ok = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ok = predicate(e);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
yield return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<R> TrySelect<T,R>(this IEnumerable<T> src, Func<T, R> 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!;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue