Question: I'd be interested in some before-and-after c# examples, some non-idiomatic vs idiomatic examples. Non-c# examples would be fine as well if they get the idea across. Thanks.

Answer: 
Idiomatic means following the conventions of the language. You want to find the easiest and most common ways of accomplishing a task rather than porting your knowledge from a different language.

non-idiomatic python using a loop with append:

```
mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
    newlist.append(i * 2)

```

idiomatic python using a list comprehension:

```
mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist] 

```
Idiomatic code is code that does a common task in the common way for your language. It's similar to a design pattern, but at a much smaller scale. Idioms differ widely by language. One idiom in C# might be to use an iterator to iterate through a collection rather than looping through it. Other languages without iterators might rely on the loop idiom.