C# 以JSON格式从LINQ向SQL检索数据?
我对从数据库到JSON格式的数据序列化有问题。我正在使用WebAPI 2和实体框架6。我已经用EF创建了一个模型。甚至还创建了数据库和包含内容的表。 当我使用下面的代码时,键入时会出现错误 控制器:C# 以JSON格式从LINQ向SQL检索数据?,c#,json,linq,entity-framework,asp.net-web-api,C#,Json,Linq,Entity Framework,Asp.net Web Api,我对从数据库到JSON格式的数据序列化有问题。我正在使用WebAPI 2和实体框架6。我已经用EF创建了一个模型。甚至还创建了数据库和包含内容的表。 当我使用下面的代码时,键入时会出现错误 控制器: private EfContext db = new EfContext(); // GET api/<controller> public IEnumerable<QR_Group> GetGroups() { var result = from g in db.
private EfContext db = new EfContext();
// GET api/<controller>
public IEnumerable<QR_Group> GetGroups()
{
var result = from g in db.QR_Groups
select g;
return result.ToList();
}
private EfContext db = new EfContext();
// GET api/<controller>
public ActionResult GetGroups()
{
var groupList = (from g in db.QR_Groups
select new
{
name = g.name,
code = g.code
}).AsQueryable();
return Content(JsonConvert.SerializeObject(groupList));
}
private EfContext db=new EfContext();
//获取api/
公共IEnumerable GetGroups()
{
var结果=来自db.QR_组中的g
选择g;
返回result.ToList();
}
我不知道如何使用Newtonsoft.Json将表序列化为Json格式的内容
我尝试了以下代码而不是上面的代码:
public IQueryable<QR_Group> GetGroups()
{
var groupList = (from g in db.QR_Groups
select new
{
name = g.name,
code = g.code
}).AsQueryable();
var json = JsonConvert.SerializeObject(groupList);
return json; //error CS0029: Cannot implicitly convert type `string' to `System.Linq.IQueryable<RestApi.Models.QR_Group>'
}
public IQueryable GetGroups()
{
var groupList=(来自db.QR_组中的g)
选择新的
{
name=g.name,
代码=g代码
}).AsQueryable();
var json=JsonConvert.SerializeObject(groupList);
返回json;//错误CS0029:无法将类型'string'隐式转换为'System.Linq.IQueryable'
}
我得到错误CS0029。。如何解决这个问题以json格式返回数据?提醒:QR_组实体有3列(Id、名称、代码)特别是对于第二个函数,JsonConvert.SerializeObject只会将任何对象序列化为JSON格式的字符串,这意味着您应该返回字符串而不是IQueryable 因此,对于控制器,有很多方法可以将其返回,例如: 编辑: 以下代码将是一种工作方式: 控制器:
private EfContext db = new EfContext();
// GET api/<controller>
public IEnumerable<QR_Group> GetGroups()
{
var result = from g in db.QR_Groups
select g;
return result.ToList();
}
private EfContext db = new EfContext();
// GET api/<controller>
public ActionResult GetGroups()
{
var groupList = (from g in db.QR_Groups
select new
{
name = g.name,
code = g.code
}).AsQueryable();
return Content(JsonConvert.SerializeObject(groupList));
}
private EfContext db=new EfContext();
//获取api/
公共操作结果GetGroups()
{
var groupList=(来自db.QR_组中的g)
选择新的
{
name=g.name,
代码=g代码
}).AsQueryable();
返回内容(JsonConvert.SerializeObject(groupList));
}
从api返回列表时,您没有提到错误
控制器。我假设您返回的数据库实体
在简单情况下,不允许您作为json结果,因为您的实体可能
可以与数据库中的其他实体链接
现在将代码修改为如下所示。这只是为了让你明白
定义一个类型,如QR\U Group\U Return
public class QR_Group_Return{
public string name{ get; set;}
public string code{ get; set;}
// Some other properties will go here.
}
现在,我们将返回IEnumerable
private EfContext db=new EfContext();
//获取api/
公共IEnumerable GetGroups()
{
var结果=(来自db.QR_组中的g
选择新QR\U组\U返回{
name=g.name,
代码=g代码,
//也映射其他属性
}).ToList();
返回结果;
}
希望这有帮助我不知道它是否可以将IQueryable转换为json字符串。尝试在第二个函数中使用.ToList()而不是AsQueryable(),并返回字符串而不是IQueryable。@Tanzeel.ToList()在IQueryable中不受支持。。只有在IEnumerable中。但这一点我也尝试过。但问题仍然存在。请检查我的更新答案,谢谢。我如何解决我的问题?你的链接对我没有帮助:(这个链接只是关于如何返回一个字符串作为控制器,我已经更新了我的答案,添加了一些我认为可行的代码。