I want to make parts of a LINQ query reusable by using expression trees (i think that's how its called).

Here's a simplified version of my query:

```
var lQuery = 
  from m in ...
  join a in ... into ta
  from ra in ta.DefaultIfEmpty()
  select 
    new {
      ...
      Status = ra != null ? ... : ..., /* <- i want this to be reusable */
      ...
    };

```

As you can see, the value of Status is determined via `? :` syntax which is translated by LINQ automatically (a expression tree i suppose, the SQL logs show a `CASE WHEN` query in the end).

How do i move that code to a separate function so that my application does not throw a `not supported` exception at runtime?

I tried adding a function

```
public static System.Linq.Expressions.Expression<System.Func<%type of ra%, %status type%>>
  QueryStatusExpression()
{
  return ra => ra != null ? ... : ...;
}

```

then use it like 

```
Status = QueryStatusExpression().Invoke(ra)

```

but it throws the `not supported` exception.

I'm out of ideas right now. Any help is appreciated.