Using LINQ, which is "without using loops in my code", you could:
hundredInts.Take(19).Concat(thirtyoneInts).Concat(hundredInts.Skip(50));
(and if you want it back as a list or array etc, the relevant ToXXX call on the end of it)
Or perhaps:
hundredInts.Select((n, i) => (i < 20 || i > 50) ? n : thirtyOneInts[i-20])
Or built in stuff:
hundredInts.RemoveRange(20, 31).InsertRange(20, thirtyOneInts);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…