C# List中的Skip和Take方法怎么优化查询速度?

问题描述:
我想把一张图片大概 16M,通过Socket传输,每次发送1024个字节给服务端。
获取图片字节方法如下:
图片说明
图一
图片说明
然后因为产生的字节比较多,造成长度较长,我不可能第一次从0-1024进行Skip和Take操作,第二次1024-2048这种SkipTake操作,因为会增加List的查询负担,list不是连续内存地址的链表,所以我才用了如下图所示的查询方法。
如图:
图片说明
每次查完,都移出第0-1024的字节,然后调用TrimExcess让List重新分配内存数据,进行内存优化
图片说明
但是:我发现这种好像比较耗时:
于是我想过以下这种方法:
就是将文件的大字节数组分为若干个长度为1024的List,然后再调用循环这若干个List取出1024个字节,这样可以减少List的查询速度,不知道各位大佬有么有更好的查询方法,或者我可以不用List这种链表进行cha'xun

用toarray转换成数组
用 Array.Copy 的方式,每次把1024字节拷贝过来处理。