I'm building a WPF app using Visual Studio 2015 against Entity Framework 6 and SQL Server 2008. I have these two tables:

```
Employee
-----------------------------
EmployeeId
FirstName
LastName
... other columns

EmployeeStatus
-----------------------------
EmployeeStatusId
EmployeeId (Foreign Key to Employee.EmployeeId)
ValidEmployeeStatusId

```

The app needs to fetch all employees whose `EmployeeStatus.ValidEmployeeStatusId` is not 2 and not 4 (Inactive and Leave of Absence). I've written this LINQ query, but it just runs forever and never returns any results:

```
var query = (from e in context.Employees
             from es in context.EmployeeStatus
                .Where(x => e.employeeID == x.employeeID 
                    && (x.validEmployeeStatusID != 2
                    && x.validEmployeeStatusID != 4)
                .DefaultIfEmpty()
             select new EmployeeViewModel
             {
                 EmployeeId = e.employeeID,
                 /* set other properties*/
             });
return await Task.Run(() => new 
    ObservableCollection<EmployeeViewModel>(query));

```

What am I doing wrong?

**Update**: Found out what was killing me on the slowness... Each `EmployeeViewModel` was calling the database in its ctor to populate some ObservableCollections. Turned those properties into `static` and added a `static bool`; if it's false, populate the properties and set bool to true. So all instances use the same data for those properties that were calling the database. For ~4000 records, that was a lot of calls.