Following this question I would like to know if the reuse of lambda parameter expression instances should be considered good or bad?
I sometimes get a complete LINQ
I would not share a parameter object between two disjoint lambdas.
First, let's not make false economies here. Objects are cheap and you are not going to be making a hundred thousand of these. (And if you are, you probably have larger problems to solve.)
Second, as you note, sharing referentially identical parameter objects across unrelated lambdas means that code which analyzes those lambda expression trees is required to understand that the parameter object has a different meaning in different contexts. That seems like a bug waiting to happen.
Third, one imagines that someday you might want to take two expression trees:
x => Foo(x);
y => Bar(y);
and from them build a third, say:
(x,y) => Foo(x) && Bar(y);
If x and y are actually both the same parameter object then you have a problem on your hands:
(x,x) => Foo(x) && Bar(x); // Huh?
On the other side, StriplingWarrior's answer points out that if you have
x => Foo(x);
x => Bar(x);
then it is easier to combine them as
x => Foo(x) && Bar(x);
because then you do not need to rewrite anything.
Basically, it just seems like a risky move with no truly compelling upside, so why do it?