将 linq 查询结果写入.csv文件 mvc



im 尝试编写一个 linq 查询来搜索数据库中的内容。 如果它获得数据,它应该将结果返回到.csv文件。 这是我的查询

var query = from a in db.User where a.id.Equals(table.id)
            select a;

我正在努力寻找如何使用此查询将结果写入数据库。使用 C# MVC 的 IM

更新

现在这是我的方法:

public FileContentResult ConnectToDatabase(Requests uc)
    {
        Context db = new Context();
        var query = (from a in db.Request
                     where a.Idnumber.Equals(uc.Idnumber)
                     select a);
        string csv = string.Concat(from re in query
                                  select string.Format("{0},{1},{2}n", re.Idnumber, re.RequestStartDate, re.RequestEndDate));

        return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "Report.csv");
    }

我收到此错误:"LINQ to Entities 无法识别方法'系统字符串格式(系统字符串、系统对象、系统对象)"

这里的问题是query是一个IQueryable,所以当你这样做时select string.Format("{0},{1},{2}n ...实体框架会尝试将其转换为SQL,但它将无法做到。

因此,有几种方法可以解决此问题:

1) 保留IQueryable,但以 EF 可以转换为 SQL 的方式构建 CSV 行:

var csv = string.Concat(query.Select(re => re.IdNumber + "," + re.RequestStartDate + "," + re.RequestEndDate + "n));

2) 将query具体化为List,以便string.Format调用在 C# 中完成,而不是在 SQL 中完成。

var query = (from a in db.Request
                     where a.Idnumber.Equals(uc.Idnumber)
                     select a).ToList();

最新更新