Not sure about C#, but in JS you would indeed use itemByRange for this. It's doesn't quite return an array, but a collection object, which has all the properties of and methods of a text object. For example, if you've got the text cursor inside a paragraph in InDesign, the following:
t = app.selection.paragraphs;
t1 = t.insertionPoints.itemByRange(3,10);
... will convert the specified range to a table.
But looking at the C# API (see screenshot), it doesn't have a "ConvertToTable" function, unfortunately.
It seems terribly limited.
Despite what it says, it's worth trying to see if it works, if you haven't already.
I gave it a go, but it doesn't work since it gives a compilation error.
Well, it's been a while since I've done anything in C#, but I do seem to recall that they introduced a Var class. The advantage there would be that you don't need to know exactly what class InDesign is returning. It's a shot in the dark, but perhaps try using var instead of Text? That might avoid the compilation error at least.