49 lines
957 B
C#
49 lines
957 B
C#
|
namespace InnovEnergy.App.EmuMeterDriver;
|
||
|
|
||
|
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!;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
}
|