I have used C# expressions before based on lamdas, but I have no experience composing them by hand. Given an Expression
There is no implicit way to do the translation. You have to wrap your existing delegate inside a lambda that creates a new type from the argument type:
var translatedPredicate = x => originalPredicate(OtherTypeFromSomeType(x))
Where OtherTypeFromSomeType creates the OtherType instance from the SomeType argument.