Leveraging Lists

First off, Lists are not limited to a type, they can contain full class objects.
String[] lists are very useful but limited to the TYPE of the item you are working with. (bool, string, int, etc)
String[]'s do not allow sorting either.
This is where Lists come in and are quite useful. Lists can also include string[]s...
i.e. List<string[]>
Unlike the string[] ,the full length of the List Object is not .Length, but .Count or .size. Simple enough.
So in c# if you were looping through a list you would use:

Say you have created a new class called car and it contains the properties
string[] colors
string make
string model
You can pull back a list of cars which include all of those wonderful properties by sending them in a list:
List<car> myCars = car.GetCars(); // assuming you have created a method in your class GetCars() to return a list of cars complete with all of their wonderful internal properties. If you have added some reflection in your class, you can even sort the cars. (I will have another page that goes over reflection, it is just for example now) myCars.Sort(); This will sort the cars by make as long as you have set up reflection to sort by make.
Simple Lists

This will include a list of strings that you can sort and is based on the Type of string and will allow a sort because it already contains reflection being just the string items themself.

In the car example above, you can act on each of the properties return in each "car" class object. It is a wonderful thing! You will see this used over and over again in coding and it is something that you should be familiar with. When I create a class, I always create a list method within the class. This way instead of return just the item you return it as a list. In turn, I normally always call the list over the single item. This way I know that if the list .Count > 1 there are more than 1 item returned. If Count it is == 1 then I know only one is returned and act on it. If Count it is < 1 then you know that it did not find anything. It leaves you open to easier searching for the correct class item. That way, if the list is > 1 then you can prompt the user by populating the returned items into a list and have them select to narrow down the search. Because the list will have returned valid entries, you are fairly certain that the selection will return the exact item they are looking for. As an example, if they were searching for a Jeep, they may put in Jeep. Your list may contain Jeep Wrangler and Jeep Patriot. ( > 1) and you would populate a list to choose from. This way you know their next search will be for either Jeep Wrangler or Jeep Patriot.. right? Now if they put in Jeep Wranger, the list would only return 1 or an exact match. If they put in Jeep Baloney no results returned, you prompt them for a better match (<1) This will be the same whether you are creating a console app, web app or mobile app and will float across most of the coding platforms.
More to come..