Why not use IQueryable in the Get statement,
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.
End Function
and complete your requests for these features.
Dim GetUser As User = UserRepository.GetUsers().Where(Function(u) (u.ID = id)).SingleOrDefault
Return GetUser
Check out My Blog , where I talk about Sharing Issues in your data access.
EDIT:
Since your methods GetTotalLimitand GetTotalUsed, I'm not sure what "objects" you get. I will try and roof using my user class.
IQueryable , -
Dim TotalLimitUsers = UserRepository.GetUsers().Sum(Function(u) u.Limit)
Dim TotalUsedUsers = UserRepository.GetUsers().Sum(Function(u) u.Used)