C#中的BiPredicate类似物

时间:2019-03-01 10:07:07

标签: java c# java-stream

我是Java工程师,需要从Java到C#编写相同的解决方案。 现在,我必须重写此示例:

private static final BiPredicate<SomeObject, String> predicate = 
    (someObject, someId) -> {
        if (someId.startsWith("someText")) {
            // some logic
            return booleanResult;
        }
        return anotherBooleanResult;
    };

BiPredicate是一个功能性接口,具有一个接受两个对象并根据实现返回布尔结果的方法,并且与常规方法相比,它的主要优点是可以在Java Stream中使用,如下所示:

someList.stream().filter(someObject => predicate.test(someObject, someId));

1 个答案:

答案 0 :(得分:3)

您可以在C#中使用Func

Func<SomeObject, string, bool> predicate = (someObject, someId) =>
{
  if (someId.StartsWith("someText"))
  {
      // some logic
      return booleanResult;
  }
  return anotherBooleanResult;
};

最后一个通用参数是返回类型,所有其他参数都是传递给方法的参数类型。 这也适用于两个以上的参数。