C# Mvc:显示列表<;学生>;从数据库中的文本文件中单击按钮

C# Mvc:显示列表<;学生>;从数据库中的文本文件中单击按钮,c#,C#,我是mvc新手。我有一个控制器,有两种方法。我想将列表返回到文本 只需单击一个按钮即可创建文件。我一直在想办法通过考试 该列表已添加到CreateReportFile方法,但没有成功。它非常适合stringbuilder对象 你知道如何在文本文件中显示列表吗 @Html.ActionLink("Download File", "CreateReportFile"); public FileStreamResult CreateReportFile()

我是mvc新手。我有一个控制器,有两种方法。我想将列表返回到文本 只需单击一个按钮即可创建文件。我一直在想办法通过考试 该列表已添加到CreateReportFile方法,但没有成功。它非常适合stringbuilder对象

你知道如何在文本文件中显示列表吗

@Html.ActionLink("Download File", "CreateReportFile");


         public FileStreamResult CreateReportFile()
                {
                    //todo: add some data from your database into that string:
                    var string_with_your_data = string.Empty;              
                    var byteArray = Encoding.ASCII.GetBytes(string_with_your_data);
                    var stream = new MemoryStream(byteArray);
                    return File(stream, "text/plain", "Report" + DateTime.Now + ".txt");
                }



                public List<Student> GetStudents()
                {
                    return new List<Student>()
                    {
                        new Student() {firstname="james",lastname="john",emailAddress="james.john@yahoo.com"},
                        new Student() {firstname="patric",lastname="swayze",emailAddress="patric.swayze@yahoo.com"},
                        new Student() {firstname="james",lastname="john",emailAddress="james.john@yahoo.com"},
                        new Student() {firstname="toy",lastname="gas",emailAddress="toy.gas@yahoo.com"}
                    };
                }
@Html.ActionLink(“下载文件”、“创建报告文件”);
公共文件流Result CreateReportFile()
{
//todo:将数据库中的一些数据添加到该字符串中:
var string_与_您的_数据=string.Empty;
var byteArray=Encoding.ASCII.GetBytes(字符串包含您的数据);
var流=新的内存流(byteArray);
返回文件(流,“文本/普通”、“报告”+DateTime.Now+“.txt”);
}
公众学生名单
{
返回新列表()
{
新学生(){firstname=“詹姆斯”,lastname=“约翰”,emailAddress=“詹姆斯。john@yahoo.com"},
新学生(){firstname=“patric”,lastname=“swayze”,emailAddress=“patric。swayze@yahoo.com"},
新学生(){firstname=“詹姆斯”,lastname=“约翰”,emailAddress=“詹姆斯。john@yahoo.com"},
新学生(){firstname=“toy”,lastname=“gas”,emailAddress=“toy。gas@yahoo.com"}
};
}

如果您试图将学生列表放入正在写入文件的字符串中,您可以尝试:

public FileStreamResult CreateReportFile()
{
    List<Student> students = GetStudents();
    StringBuilder sb = new StringBuilder();
    foreach (Student s in students)
        sb.AppendLine(s.firstname + ", " + s.lastname + ", " + s.emailAddress);

    var string_with_your_data = sb.ToString();
    var byteArray = Encoding.ASCII.GetBytes(string_with_your_data);
    var stream = new MemoryStream(byteArray);
    return File(stream, "text/plain", "Report" + DateTime.Now + ".txt");
}
public FileStreamResult CreateReportFile()
{
List students=GetStudents();
StringBuilder sb=新的StringBuilder();
foreach(学生中的学生)
sb.附录行(s.firstname+“,+s.lastname+”,“+s.emailAddress);
var string_与_your_data=sb.ToString();
var byteArray=Encoding.ASCII.GetBytes(字符串包含您的数据);
var流=新的内存流(byteArray);
返回文件(流,“文本/普通”、“报告”+DateTime.Now+“.txt”);
}

您所要做的就是将其添加为字符串,然后发送数据

 foreach(Student test in GetStudents())
            {
                string_with_your_data += test.firstname + ", " + test.lastname + ", " + test.emailAddress + "\r\n";
            }

如果您询问如何将列表对象转换为文本,您将需要创建一个方法来实现这一点,或者您可以使用序列化程序,但这将把它格式化为json或xml

要在学生对象中自己转换对象,可以使用以下内容覆盖ToString:

public override string ToString()
{ 
    return String.Format("firstname={0}, lastname={1}, emailAddress={2}", firstname, lastname, emailAddress);
}
然后你可以循环浏览你的列表

string mystring = string.Empty;
foreach(var student in Students)
     mystring += student.ToString() + "\n";

只是一些可能会让你开始的想法。

那么你的问题是无法将内容保存到文本文件还是无法将学生列表保存到createReport?我无法将该列表发送到文本文件并将其保存为文本文件。
string.Join(“\n”,学生)
更简洁,对于循环,它的性能比在
中附加字符串要好。谢谢。这很有帮助。