I have an expression like this:
EqualByComparer comparer;
if (ListEqualByComparer.TryGetOrCreate(x, y, out comparer) ||
EnumerableEqualByComparer.TryGetOrCreate(x, y, out comparer))
{
return comparer.Equals(x, y, compareItem, settings, referencePairs);
}
Will ListEqualByComparer.TryGetOrCreate always be called before EnumerableEqualByComparer.TryGetOrCreate?

Will
ListEqualByComparer.TryGetOrCreatealways be called beforeEnumerableEqualByComparer.TryGetOrCreate?
Yes, and as || is short-circuiting, the second call will only be made if the first call returns false.
From the C# 5 specification, section 7.12.1:
When the operands of
&&or||are of typebool, or when the operands are of types that do not define an applicableoperator &oroperator |, but do define implicit conversions tobool, the operation is processed as follows:[...]
The operation
x || yis evaluated asx ? true : y. In other words,xis first evaluated and converted to typebool. Then, ifxis true, the result of the operation istrue. Otherwise,yis evaluated and converted to typebool, and this becomes the result of the operation.
See more on this question at Stackoverflow