Если вы не ожидаете дальнейшего составления данных (на db-сервере), тогда:
return contacts.ToList().AsQueryable();
хотя в этом случае я бы предпочел вернуть IEnumerable<Contact>
или IList<Contact>
, чтобы сделать несмешиваемую природу очевидной. При подходе AsQueryable
он все равно будет композируемым , но будет компоноваться через LINQ-to-Objects (поэтому после он выберет записи из базы данных).
Если вы делаете ожидаете дальнейшего его составления, тогда вы должны передать контекст данных (или, если возможно, вышестоящий IQueryable<something>
) в метод и позволить вызывающая сторона обрабатывает время жизни:
public IQueryable<Contact> GetContacts(dbDataContext db, string clientID)
{
return from _contacts in db.Contacts
where _contacts.ClientID == clientID
orderby _contacts.LastName ascending
select _contacts;
}