In the example you are using, which you describe in your question, using LINQ will be much faster than using lazy loading.
This statement:
var courts= _clubRepository.GetClub(clubId).Courts;
equivalent to these operators:
var club = _clubRepository.GetClub(clubId);
var courts = club.Courts;
SQL ClubId == clubId. SQL, ClubId == clubId. , , - , sp_executesql.
,
var courts =_context.Courts.Where(c=>c.ClubId==clubId)
SQL-, .
, Club , , , , .