Connect graph from 2D array
I don't know about "LINQ voodoo", but you could do this in one pass if you reversed the order you're processing the rows. Something like this:

        //build triangle graph    
        var triangleGraph = new TriangleNode[triangleNumbers.Length][];

        for (int row = triangleNumbers.Length - 1; row &gt;= 0; row--)
        {
            triangleGraph[row] = new TriangleNode[triangleNumbers[row].Length];
            for (int col = 0; col &lt; triangleGraph[row].Length; col++)
            {
                //create the Node and save the value
                bool isEnd = row == triangleNumbers.Length - 1;
                triangleGraph[row][col] = new TriangleNode(triangleNumbers[row][col])
                                              {
                                                  IsEnd = isEnd,
                                                  Left = isEnd ? null : triangleGraph[row + 1][col],
                                                  Right = isEnd ? null : triangleGraph[row + 1][col + 1]
                                              };
            }
        }


I'll admit, I didn't test