Apparently its not working. "nodes" is a 2d array
Ahh, I see. The primary set of LINQ methods work with IEnumerable<T>. 2D arrays appear to only implement IEnumerable but not the generic version of the interface. That's kind of strange considering the array rank doesn't affect whether it's homogenous or not...
In that case, you could add one more step if you REALLY wanted to do it this way:
return nodes
.Cast<Node>() // Quick way to convert from IEnumerable to IEnumerable<Node>
.Where(n => n.Number == number)
.Select(n => n.Coordinates)
.Cast<Coordinates?>()
.FirstOrDefault();
(Personally, that's a lot of LINQ for such a simple operation. I would stick with the foreach loop.)