A colleague once said that God is killing a kitten every time I write a for-loop.
When asked how to avoid for-loops, his answer was to use a functional language. However
A simple (and pointless really) example:
Loop
// mystrings is a string array
List myList = new List();
foreach(string s in mystrings)
{
if(s.Length > 5)
{
myList.add(s);
}
}
Linq
// mystrings is a string array
List myList = mystrings.Where(t => t.Length > 5).ToList();
In my book, the second one looks a lot tidier and simpler, though there's nothing wrong with the first one.