I have tested the code with VB.Net, and it works, but I haven't tested on the PIC yet.

I actually tried this code first but it did not compile:
adcData.highbyte[index] = ADRESH
adcData.lowbyte[index] = ADRESL
I guess you can't use the .lowbyte/.highbyte syntax on arrays.

Using the temp variable is probably the norm but I figure there might be some trick to doing
the same thing all nice and clean on one line.