Getting index of the smallest number in a list

I have tried this:
distanceList.IndexOf(distanceList.Min())

But I got an error:

InvalidOperationException: Operation is not valid due to the current state of the object
System.Linq.Enumerable.Iterate[Single,Single] (IEnumerable1 source, Single initValue, System.Func3 selector)
System.Linq.Enumerable.Min (IEnumerable`1 source)

Try:

float minVal = distanceList.Min();
int index = distanceList.IndexOf(minVal);

edit

I found the problem. I had a look at the implementation of the “Min” extension method. That method will throw the exception you got when the enumeration is empty. Min is required to return any value but if there’s no value at all it can’t return anything.

This is of course documented. It’s quite logical in the end but i didn’t though of that case since you just posted that single line of code.

So to fix your probem: Check if the list contains any elements and if not, don’t execute the Min extension method.