Возвращая IList, вы оцениваете запрос. Прелесть Linq2Sql в том, что он переводит ваше выражение в запрос sql и выполняет его на сервере. Возвращая IList, вы теряете эту функциональность.
Ничто не мешает вам вызывать .ToList () для вашего объекта IQueryable после создания запроса.
Надеюсь, что поможет