我做了一些研究但是没有运气,一般来说编程仍然相对较新,任何有关代码效率的提示都非常受欢迎。
那么,在通过我的一个评分函数或更好的逗号分隔的CSV文件运行之后,我将如何将我的集合的内容+等级写入文本文件。
我不断遇到像public func download(_ URLRequest: URLRequestConvertible, destination: Request.DownloadFileDestination) -> Request {
return Manager.sharedInstance.download(URLRequest.URLRequest, to: destination)
}
public func download(resumeData data: Data, destination: Request.DownloadFileDestination) -> Request {
return Manager.sharedInstance.download(resumingWith: data, to: destination)
}
这样的问题。我知道我可能在这里错过了一步,但我很难弄清楚它是什么。
这是我的列表格式我从CSV文件加载值并分别存储到FirstLastName和MarksValue。
下面是我的评分单选按钮,我设法让他们将我的函数+ FirstLastName和MarksValue的输出打印到一个消息框,以便我认为这是一个开始。
cannot convert from 'string' to string[]
不确定这是多么相关,但这是我的助手类
public class Marks
{
public string FirstLastName { get; set; }
public int MarksValue { get; set; }
//public string mySecondaryGrade { get; set; }
}
private void buttongradeStart_Click(object sender, RoutedEventArgs e)
{
// This runs through an if statement based on my radio buttons.
//Testing that radio buttons work with my if else if statements
// will change values to my grade function later
Grade grader = new Grade();
VET vetGrader = new VET();
PolyOveride overideVet = new PolyOveride();
Helper myhelperArray = new Helper();
string v;
//This is a check to see if any data has been loaded.
if (dLoad == true)
{
//var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
System.Windows.Forms.SaveFileDialog saveDialogue = new System.Windows.Forms.SaveFileDialog();
saveDialogue.Title = "Save File";
saveDialogue.FileName = "Graded-Assessment1.csv";
saveDialogue.Filter = "CSV Files(*.csv)|*.csv|Text Files(*.txt)|*.txt|All files(*.*)|*.*";
saveDialogue.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (saveDialogue.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
var path = saveDialogue.FileName;
if (radioCollegeGrade.IsChecked == true )
{
foreach (Marks mMarks in myhelperArray)
{
File.WriteAllLines(path, v );
v = grader.CollegeGrade(mMarks.MarksValue);
System.Windows.Forms.MessageBox.Show(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
//System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.csv");
//file.WriteLine(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
//file.Close();
}
}
else if (radioVetGrade.IsChecked == true)
{
foreach (Marks mMarks in myhelperArray)
{
v = vetGrader.VETGrade(mMarks.MarksValue);
System.Windows.Forms.MessageBox.Show(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
}
}
else if (radioCompetency.IsChecked == true)
{
foreach (Marks mMarks in myhelperArray)
{
v = overideVet.VETGrade(mMarks.MarksValue);
System.Windows.Forms.MessageBox.Show(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
}
}
else
{
System.Windows.Forms.MessageBox.Show("I am not sure how you deslected a box!, you should probably select an option.");
}
}
else
{
System.Windows.Forms.MessageBox.Show("Placeholder Message");
}
}
else
{
System.Windows.Forms.MessageBox.Show("You have not selected a file for grading");
}
}
答案 0 :(得分:0)
好吧,我最终在一个非常基础的层面解决它,它仍有很大的改进空间,期待尝试CsvHelper nuget包。我最初想要的是非常简单,不知道为什么我花了这么长时间才弄明白。
在我的代码盯着我看了一个小时之后,我意识到我需要在我的Marks List中添加第三个值,将我的评分函数的输出添加到我们的列表中。然后我使用StreamWriter将列表的每个部分写入csv文件。
我最初的错误是尝试将MarksValue + FirstLastName + v写入for-each循环中的文本文件而不更新列表。
在实现了所有这些之后,我取消注释了mySecondaryGrade,它已经是我们列表中的值,然后将字符串v的内容保存到mySecondaryGrade。仍然有一些异常处理和整理,但它很好,让它工作和产生结果。
public class Marks
{
public string FirstLastName { get; set; }
public int MarksValue { get; set; }
public string mySecondaryGrade { get; set; }
}
private void buttongradeStart_Click(object sender, RoutedEventArgs e)
{
// This runs through an if statement based on my radio buttons.
//Testing that radio buttons work with my if else if statements
// will change values to my grade function later
Grade grader = new Grade();
VET vetGrader = new VET();
Marks secMarks = new Marks();
PolyOveride overideVet = new PolyOveride();
Helper myhelperArray = new Helper();
//string x;
if (dLoad == true)
{
//var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
System.Windows.Forms.SaveFileDialog saveDialogue = new System.Windows.Forms.SaveFileDialog();
saveDialogue.Title = "Save File";
saveDialogue.FileName = "Graded-Assessment1.csv";
saveDialogue.Filter = "CSV Files(*.csv)|*.csv|Text Files(*.txt)|*.txt|All files(*.*)|*.*";
saveDialogue.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (saveDialogue.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//var mySecondaryGrade = secMarks.mySecondaryGrade;
//IMPORTANT I NEED TO ADD THE GRADE OUTPUT TO MY LIST AND NOT JUST DISPLAY OUTPUT IN TEXTBOX
string v;
if (radioCollegeGrade.IsChecked == true )
{
foreach (Marks mMarks in myhelperArray)
{
v = grader.CollegeGrade(mMarks.MarksValue);
System.Windows.Forms.MessageBox.Show(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
mMarks.mySecondaryGrade = v;
//dataGridMarks.Columns[3] = mMarks.mySecondaryGrade;
}
using (var writer = new StreamWriter(saveDialogue.FileName))
{
foreach (Marks writeMarks in myhelperArray)
{
writer.WriteLine(writeMarks.FirstLastName + "," + writeMarks.MarksValue + "," + writeMarks.mySecondaryGrade);
}
}
}
else if (radioVetGrade.IsChecked == true)
{
foreach (Marks mMarks in myhelperArray)
{
v = vetGrader.VETGrade(mMarks.MarksValue);
System.Windows.Forms.MessageBox.Show(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
mMarks.mySecondaryGrade = v;
}
using (var writer = new StreamWriter(saveDialogue.FileName))
{
foreach (Marks writeMarks in myhelperArray)
{
writer.WriteLine(writeMarks.FirstLastName + "," + writeMarks.MarksValue + "," + writeMarks.mySecondaryGrade);
}
}
}
else if (radioCompetency.IsChecked == true)
{
foreach (Marks mMarks in myhelperArray)
{
v = overideVet.VETGrade(mMarks.MarksValue);
System.Windows.Forms.MessageBox.Show(mMarks.FirstLastName + " " + mMarks.MarksValue + " " + v);
mMarks.mySecondaryGrade = v;
}
using (var writer = new StreamWriter(saveDialogue.FileName))
{
foreach (Marks writeMarks in myhelperArray)
{
writer.WriteLine(writeMarks.FirstLastName + "," + writeMarks.MarksValue + "," + writeMarks.mySecondaryGrade);
}
}
}
else
{
System.Windows.Forms.MessageBox.Show("I am not sure how you deslected a box!, you should probably select an option.");
}
}
else
{
System.Windows.Forms.MessageBox.Show("Placeholder Message");
}
}
else
{
System.Windows.Forms.MessageBox.Show("You have not selected a file for grading");
}
}