Почему бы не использовать IQueryable в своем заявлении "Get",
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.
End Function
и выполняйте ваши запросы по этим функциям.
Dim GetUser As User = UserRepository.GetUsers().Where(Function(u) (u.ID = id)).SingleOrDefault
Return GetUser
Посмотрите Мой блог , где я говорю о Разделении проблем в вашем доступе к данным.
EDIT:
Так как ваши методы GetTotalLimit
и GetTotalUsed
, я не уверен, какие "объекты" вы получаете. Я попробую и использую мой класс пользователя.
Сохраняйте IQueryable таким же, и при вызове метода вы будете делать что-то вроде
Dim TotalLimitUsers = UserRepository.GetUsers().Sum(Function(u) u.Limit)
Dim TotalUsedUsers = UserRepository.GetUsers().Sum(Function(u) u.Used)