Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
List 存储时间列表并按升序排序_List_Sorting_Time - Fatal编程技术网

List 存储时间列表并按升序排序

List 存储时间列表并按升序排序,list,sorting,time,List,Sorting,Time,我正在使用C#Net 4 我有一个以秒为单位的时间列表,最多600(10分钟),格式为######,目前我正在将这些时间收集到一个列表字符串中,然后使用.Sort() 下面是一个将其写入txt文件的示例 193.225 193.225 88 195.489 195.489 89 197.741 197.741 90 199.993 199.993 91 2.334 2.334 2 20.213 20.213 13 202.246 202.246 92 204.51 2

我正在使用C#Net 4

我有一个以秒为单位的时间列表,最多600(10分钟),格式为######,目前我正在将这些时间收集到一个列表字符串中,然后使用.Sort()

下面是一个将其写入txt文件的示例

193.225 193.225 88

195.489 195.489 89

197.741 197.741 90

199.993 199.993 91

2.334   2.334   2

20.213  20.213  13

202.246 202.246 92

204.51  204.51  93

206.762 206.762 94
我需要帮助找到一个简单的方法,把这些在正确的顺序,我做什么,我可以使用列表int,因为标签,分隔每个字段

这是我目前的代码

    private void ExportMarkCollections(MarkCollection collection, string exportType)
    {
        if (exportType == "vixen3")
        {
            foreach (MarkCollection mc in MarkCollections)
            {
                MessageBox.Show(String.Format("{0}", mc.Name));

                mymarks = "";
                foreach (TimeSpan time in mc.Marks)
                {
                    mymarks = mymarks + time;
                }
                MessageBox.Show(String.Format("{0}", mymarks));
            }
        }

        if (exportType == "audacity")
        {
            List<string> BeatMarks = new List<string>();
            iMarkCollection = 0;
            foreach (MarkCollection mc in MarkCollections)
            {
                iMarkCollection++;
                foreach (TimeSpan time in mc.Marks)
                {
                    BeatMarks.Add(time.TotalSeconds + "\t" + time.TotalSeconds + "\t" + iMarkCollection);
                    if (MarkCollections.Count == 1)
                        iMarkCollection++;
                }
            }
            BeatMarks.Sort();

            string filter = "Audacity Marks (*.txt)|*.txt|All Files (*.*)|*.*";
            saveFileDialog.DefaultExt = ".txt";
            saveFileDialog.Filter = filter;
            DialogResult result = saveFileDialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                string name = saveFileDialog.FileName;

                using (System.IO.StreamWriter file = new System.IO.StreamWriter(name))
                {
                    foreach (string bm in BeatMarks)
                    {
                        file.WriteLine(bm);
                    }
                }
            }
        }
    }
private void ExportMarkCollections(MarkCollection集合,string exportType)
{
如果(exportType==“vixen3”)
{
foreach(MarkCollections中的MarkCollection mc)
{
Show(String.Format(“{0}”,mc.Name));
mymarks=“”;
foreach(时间跨度时间,以mc.标记为单位)
{
我的分数=我的分数+时间;
}
Show(String.Format(“{0}”,mymarks));
}
}
if(exportType==“audacity”)
{
List BeatMarks=新列表();
iMarkCollection=0;
foreach(MarkCollections中的MarkCollection mc)
{
iMarkCollection++;
foreach(时间跨度时间,以mc.标记为单位)
{
添加(time.TotalSeconds+“\t”+time.TotalSeconds+“\t”+iMarkCollection);
if(MarkCollections.Count==1)
iMarkCollection++;
}
}
BeatMarks.Sort();
string filter=“Audacity Marks(*.txt)|*.txt|所有文件(*.*)|*.”;
saveFileDialog.DefaultExt=“.txt”;
saveFileDialog.Filter=Filter;
DialogResult=saveFileDialog.ShowDialog();
if(result==DialogResult.OK)
{
string name=saveFileDialog.FileName;
使用(System.IO.StreamWriter文件=新的System.IO.StreamWriter(名称))
{
foreach(BeatMarks中的字符串bm)
{
文件写入线(bm);
}
}
}
}
}

迈克的评论是正确的。例如,您可以这样做(注意-此代码中没有错误处理!):

然后:

    list.Sort(CompareStrings);

但是,我建议首先不要将数字放入制表符分隔的字符串中。数据应该尽可能保持“干净”的格式,直到最后一刻(例如,直到在UI中显示),否则你只会让事情变得更加困难(你必须担心区域设置、小数点与逗号等)。考虑这些潜在的问题,如果你正在输出的文件将在不同的机器上读取/通过不同的应用程序读取。你的目标是哪种语言?到现在为止你都做了些什么?最后一列的格式不是#######,重要吗?哪一列应该被排序,或者你希望最后只有一列而不是三列?到目前为止,您尝试了什么?您当前的输出是什么?预期的输出是什么?您需要将前导零放在数字字符串中,或者将它们作为数字分开并按这种方式排序。目标语言是C#.Net 4,目前我填充列表并使用。排序,这是我现在的输出。最后一列是它应该是的,第一列是它应该排序的列。预期输出如图所示,但顺序正确。
    list.Sort(CompareStrings);