将列表拆分为开始,中间和结束的最佳方法

时间:2013-05-11 18:53:59

标签: c# arrays

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

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

我在研究这个问题并将其纳入计算术语时遇到了问题,我非常感谢您的知识和时间。

1 个答案:

答案 0 :(得分:3)

你可以使用一点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);

请参阅TakeSkip方法。

您还可以使用ArraySegment<T>类:

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);