C# 带有2个时间数据的LinkedList

C# 带有2个时间数据的LinkedList,c#,C#,我必须从txt文件向linkedlist提供2次数据。 但我无法填写 StreamReader sr; public void FileReader(string file, LinkedList<Task> Tasks) { string splitter= "."; int TaskIndex= 0; sr = new StreamReader(file); LinkedList<Task> data = new

我必须从txt文件向linkedlist提供2次数据。 但我无法填写

StreamReader sr;
public void FileReader(string file, LinkedList<Task> Tasks)
{
    string splitter= "."; 
    int TaskIndex= 0;
    sr = new StreamReader(file);
    LinkedList<Task> data = new LinkedList<Task>();            

    while (!sr.EndOfStream)
    {
        string tempString = sr.ReadLine(); 
        if (splitter== tempString) 
        {
            TaskIndex++;                    
            Tasks.Add(data);

        }               
    }            
    sr.Close();            
}

public class Task
{        
    public TimeSpan FullTime= new TimeSpan(0, 24, 0, 0); 
    public TimeSpan TaskLength { get; set; }
    public TimeSpan Deadline{ get; set; }
    public int Penalty{ get; } = 50000;
    public Task(TimeSpan TaskLength, TimeSpan Deadline)
    {
        this.TaskLength= TaskLength;
        this.Deadline= Deadline;
    }
}
StreamReader-sr;
公共void文件读取器(字符串文件、LinkedList任务)
{
字符串拆分器=“.”;
int TaskIndex=0;
sr=新的StreamReader(文件);
LinkedList数据=新建LinkedList();
而(!sr.EndOfStream)
{
string tempString=sr.ReadLine();
if(拆分器==tempString)
{
TaskIndex++;
任务。添加(数据);
}               
}            
高级关闭();
}
公开课任务
{        
公共时间跨度FullTime=新时间跨度(0,24,0,0);
公共时间跨度任务长度{get;set;}
公共时间跨度截止日期{get;set;}
公共整数惩罚{get;}=50000;
公共任务(时间跨度任务长度、时间跨度截止日期)
{
TaskLength=TaskLength;
这个。截止日期=截止日期;
}
}
txt:前2个数据是TaskLength小时和分钟,后2个数据是截止日期小时和分钟,每行都是一个任务

2,30,5,0

4,0,16,0

1,0,2,0

6,0,14,0

3,30,10,0

2,0,22,0


听起来你想做的是从文件中读取每一行,在逗号字符上拆分该行(并且去掉句点,因为每一行都是任务),将行中的数字解析为整数,从数字中创建两个
TimeSpan
对象,从两个
TimeSpan
对象中创建一个
task
对象,然后将该
任务
添加到
链接列表

如果是这种情况,那么下面是一个示例方法,您可以将文件名传递给它,并从文件内容返回一个
LinkedList

public LinkedList<Task> GetTasksFromFile(string filePath)
{
    // This will hold our results from reading the file lines into Tasks
    var tasks = new LinkedList<Task>();

    // Loop through each line in the file 
    foreach (string line in File.ReadLines(filePath))
    {
        // Split the line on the comma and period characters so we get separate values
        string[] parts = line.Split(new[] {'.', ','}, 
            StringSplitOptions.RemoveEmptyEntries);

        // These will hold the parsed values from each line of text in our file
        int lengthHour;
        int lengthMinute;
        int deadlineHour;
        int deadlineMinute;

        // int.TryParse will try to convert a string to an int, and will return 
        // true if successful. It will also set the 'out' parameter to the result.
        // We do this on each part from our line of text 
        // (after ensuring that there are at least 4 parts)
        if (parts.Length > 3 &&
            int.TryParse(parts[0], out lengthHour) &&
            int.TryParse(parts[1], out lengthMinute) &&
            int.TryParse(parts[2], out deadlineHour) &&
            int.TryParse(parts[3], out deadlineMinute))
        {
            // If our parsing succeeded, create a new task
            // with the results and add it to our LinkedList
            TimeSpan length = new TimeSpan(lengthHour, lengthMinute, 0);
            TimeSpan deadline = new TimeSpan(deadlineHour, deadlineMinute, 0);
            Task task = new Task(length, deadline);
            tasks.AddLast(task);
        }
    }

    // Return our linked list back to the caller
    return tasks;
}
public LinkedList GetTasksFromFile(字符串文件路径)
{
//这将保存将文件行读入任务的结果
var tasks=newlinkedlist();
//循环浏览文件中的每一行
foreach(File.ReadLines(filePath)中的字符串行)
{
//在逗号和句点字符上拆分行,以便获得单独的值
string[]parts=line.Split(新[]{'.','.','},
StringSplitOptions.RemoveEmptyEntries);
//这些将保存文件中每行文本的解析值
国际长度小时;
国际长度分钟;
int死线小时;
int deadlineMinute;
//TryParse将尝试将字符串转换为int,并返回
//如果成功,则为true。它还将为结果设置“out”参数。
//我们从一行文字的每一部分都这样做
//(确保至少有4个零件后)
如果(零件长度>3&&
内锥虫(零件[0],外长小时)&&
内锥虫(零件[1],外长度分钟)&&
int.TRIPARSE(第[2]部分,截止时间外)&&
int.TRIPARSE(零件[3],超出最后期限分钟))
{
//如果解析成功,请创建一个新任务
//并将其添加到我们的LinkedList
TimeSpan长度=新的TimeSpan(lengthHour,lengthMinute,0);
TimeSpan deadline=新的时间跨度(死线小时、死线分钟,0);
任务=新任务(长度、截止日期);
tasks.AddLast(任务);
}
}
//将我们的链接列表返回给调用方
返回任务;
}

你的票数很接近,所以我认为你应该澄清你所说的“但我不能填写”是什么意思。查看您的代码和数据,我猜在您的
FileReader
方法的末尾,
data
是空的。这是否正确?数据有一个错误:无法从“LinkedList”转换为“Task”。您从未创建
任务
实例,而是将一个
LinkedList
数据
)添加到另一个(
任务
)。您需要选择一个要使用的列表,
数据
任务
,然后将
任务
添加到其中。