The variable PropExists as bool has been already created
The Property of interest is BTS.RetryCount
The Message is Message_In
The list from Using Operators in Expressions (http://msdn2.microsoft.com/en-us/library/aa561847.aspx) has the typical list of stuff that you expect in C#, multiplication, bit operations (shift left and right) and Boolean operators, but a couple of extremely useful constructs are available that are unique to BizTalk.
The most important of these (in my humble opinion) is the exists operator.
As you are all aware, to even check whether a property exists in an expression throws an exception… as in the following case:
PropExists = (Message_In(BTS.RetryCount) != null && Message_In(BTS.RetryCount) != "");
If BTS.RetryCount does not exist in the message context, then the MissingPropertyException (Windows Event Log Event ID 10019) is thrown.
Without having to resort to a scope shape and exception handler, the exists operator allows you to check if a property exists in a message and is used in the following format:
PropExists = BTS.RetryCount exists Message_In;
if (BTS.RetryCount exists Message_In)
Using the XLANG/s exists operator in your orchestration allows you to test for the existence of a property in a message without having to resort to a scope shape and exception handler.
Below are a few of more XLANG/s functions that can provide some value in your Orchestrations:
raise error on arithmetic overflow
checked(x = y * 1000)
ignore arithmetic overflow
unchecked(x = y * 1000)
test for successful completion of transactional scope or orchestration
succeeded(<transaction ID for child transaction of current scope or service>)
test for the existence of a message context property
BTS.RetryCount exists Message_In