In this case, you would create an instance of Company, and then use it to return a List of Companies?
Some people do this, but I prefer to seperate my data object into a dumb data container:
public class Company : EntityBase
{
private int _id;
private string _name;
private string _location;
}
I use a base class (EntityBase) that contains common methods for converting the dumb entity back into a collection of SQLParameters (for persisting), as well as instantiating it from a passed in SQLReader (this gets overridden in each concrete class, to map the reader to the private variables).
I then prefer to use a "Service" class that actually makes the database calls, creates the appropriate entity object, and returns it, I can utilize polymorphism here to reduce code duplication heavily.