Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将列表分为开始、中间和结束的最佳方式_C#_Arrays - Fatal编程技术网

C# 将列表分为开始、中间和结束的最佳方式

C# 将列表分为开始、中间和结束的最佳方式,c#,arrays,C#,Arrays,如果有人能告诉我拆分包含文本数据的列表的最佳方法,我将不胜感激。当前程序读取一个文本文件并将值存储到一个列表中,行/数据的数量不是恒定的,因此如果可能的话,我想按百分比分割完整列表,例如前15%=开始,下70%=中间,最后15%=结束 附加信息=程序监控正在运行的会话,因此问题的开始(预热)中间(主运行)和结束(冷却)方面。最终,我希望能够将其合并到zedgraph中,并在运行会话中显示我的性能 我在研究这个问题并将其转化为计算方面遇到了问题,我非常感谢您的知识和时间。您可以使用一点Linq

如果有人能告诉我拆分包含文本数据的列表的最佳方法,我将不胜感激。当前程序读取一个文本文件并将值存储到一个列表中,行/数据的数量不是恒定的,因此如果可能的话,我想按百分比分割完整列表,例如前15%=开始,下70%=中间,最后15%=结束

  • 附加信息=程序监控正在运行的会话,因此问题的开始(预热)中间(主运行)和结束(冷却)方面。最终,我希望能够将其合并到zedgraph中,并在运行会话中显示我的性能

我在研究这个问题并将其转化为计算方面遇到了问题,我非常感谢您的知识和时间。

您可以使用一点Linq:

var index1 = (int) Math.Round(array.Length * .15);
var index2 = (int) Math.Round(array.Length * .70);

var start = array.Take(index1);
var middle = array.Skip(index1).Take(index2 - index1);
var end = array.Skip(index2);
请参阅和方法

您还可以使用该类:

var index1=(int)Math.Round(array.Length*.15);
var index2=(int)数学四舍五入(array.Length*.70);
//将T替换为您的类名
var start=newarraysegment(数组,0,index1);
var middle=新的数组分段(数组,index1,index2-index1);
var end=newarraysegment(array,index2,array.Length-index2);

只需创建一个for块,并让您的控件用于list.Count()/100*15等。我尝试了类似的方法,但是我只能从列表的开头获取第一个百分比,因此实现了前15%,但是中间部分也从第一个列表(第1行)读取,而不是从15%读取(如果有意义的话),谢谢你的回复。哦,太好了,谢谢你的回复,这是我在过去七个小时里一直在努力做的:),我想我需要修改我的Linq,等它允许我的时候我马上接受。
var index1 = (int) Math.Round(array.Length * .15);
var index2 = (int) Math.Round(array.Length * .70);

// Replace T with your class name
var start = new ArraySegment<T>(array, 0, index1);
var middle = new ArraySegment<T>(array, index1, index2 - index1);
var end = new ArraySegment<T>(array, index2, array.Length - index2);