LINQ generating chart
A few general points:

(1)  GlobalVariables.Regions -- I don't know how big your application is, but if I'm looking at a code base and I see some static class called "GlobalVariables" that usually makes me leery.  In a pure object-oriented language, all data can (and arguably ought to be) associated with some object.  A GlobalVariables class with a bunch of statics on it is the kind of thing that is likely to grow and rot with as the application grows (and rots).

(2)  As mentioned by Lars-Erik, I think that breaking some of that functionality out into other methods would be beneficial.  Personally, I look at control statements, especially nested ones for opportunities to do that.  Looking at your code, the logic inside for (int i = 0; i &lt; regions.Length; i++) would be a good candidate.  Just by looking at the code casually, it's hard to tell what all is going on inside that loop.  But if you pulled it out into a method and gave it a descriptive name, someone looking at your code could easily understand what the loop was doing.

(3)  You have a lot of code (as Linq tends to) with sequences of statements like Foo.Bar().Baz().Rebar();  Generally speaking, if anything in those sequence chains returns null, you're going to get null reference exceptions.  Perhaps clients of this method handle exceptions that it generates, but I can't see that you're handling anything but the "happy path" in this method.  What happens if things go unexpectedly?