1

こんにちは。ASP.net プログラミングは初めてなので、サンプル コードをご容赦ください。このアクション コードを持つコントローラーがあります。Employee テーブルのデータを CSV ファイルに入れたかったのです。私はまだlinqクエリが苦手なので、行ごとに取得する方法がわかりません。MVC4を使用しています。

    public FileContentResult DownloadCSV()
    {

        //This is my linq query
        var EmployeeQry = from data in db.Employees
                          select data;

        //I want to put my Employee data into a CSV. something like this..
        string csv = "EmployeeName,EmployeePostion,EmployeeDepartment";
        return File(new System.Text.UTF8Encoding().GetBytes(csv),"text/csv","Report.csv");

    }
4

3 に答える 3

1

これを試して:

string csv = string.Concat(
             EmployeeQry.Select(
                    employee => string.Format("{0},{1},{2}\n", employee.Name, employee.Position, employee.Department)));

またはこれ(代替構文と同じ):

string csv = string.Concat(from employee in EmployeeQry
                              select string.Format("{0},{1},{2}\n", employee.Name, employee.Position, employee.Department));
于 2013-05-11T19:57:36.733 に答える
1

ありがとうMatis ..しかし、string.formatはlinqで機能していません。そのため、データベースでクエリを実行し、ローカルでフォーマットしました。

public FileContentResult DownloadCSV()
{
    string csv = string.Concat(from employee in db.Employees
                               select employee.EmployeeCode + "," 
                               + employee.EmployeeName + "," 
                               + employee.Department + "," 
                               + employee.Supervisor + "\n");
    return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "Report.csv");
}
于 2013-05-12T10:24:07.243 に答える