I have recently migrated this code to Entity Framework 4 and it is failing. Obviously if status does not have a value, return all matches, if it does have a value match ones where `user.StatusID == 1`.

```
return users.SingleOrDefault(
                user =>
                user.Username == username &&
                user.EncryptedPassword == password &&
                (!status.HasValue || user.StatusID == 1)
                );

```

Exception returned:

```
ArgumentException: The specified value is not an instance of type 'Edm.Int32'
Parameter name: value

```

However, removing the conditional test and it works fine:

```
return users.SingleOrDefault(
                user =>
                user.Username == username &&
                user.EncryptedPassword == password &&
                user.StatusID == 1
                );

```

Any ideas? How do you perform conditional testing in EF 4? Surely not separate if lines?

I use these conditional tests time and time again in Linq to Sql; it is really odd as to why this is not functioning in EF 4. There must be something simple going wrong, perhaps there is a recommended alternate way of doing things in EF 4.0.

Thanks for your help guys,  

Graham