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();