Generally, when using the conditional operator, here's the syntax:

```
int x = 6;
int y = x == 6 ? 5 : 9;

```

Nothing fancy, pretty straight forward.

Now, let's try to use this when assigning a Lambda to a Func type. Let me explain:

```
Func<Order, bool> predicate = id == null
    ? p => p.EmployeeID == null
    : p => p.EmployeeID == id;

```

That's the same syntax, and *should* work? Right? For some reason that doesn't. The compiler gives this nice cryptic message:

> 
> Error 1 Type of conditional expression cannot be determined because there is no implicit conversion between 'lambda expression' and 'lambda expression'
> 
> 
> 

I then went ahead and changed the syntax and this way it *did* work:

```
Func<Order, bool> predicate = id == null
    ? predicate = p => p.EmployeeID == null
    : predicate = p => p.EmployeeID == id;

```

I'm just curious as to why it doesn't work the first way?

(Side note: I ended up not needing this code, as I found out that when comparing an int value against null, you just use object.Equals)