C# 以JSON格式从LINQ向SQL检索数据?

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.

我对从数据库到JSON格式的数据序列化有问题。我正在使用WebAPI 2和实体框架6。我已经用EF创建了一个模型。甚至还创建了数据库和包含内容的表。 当我使用下面的代码时,键入时会出现错误

控制器:

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中。但这一点我也尝试过。但问题仍然存在。请检查我的更新答案,谢谢。我如何解决我的问题?你的链接对我没有帮助:(这个链接只是关于如何返回一个字符串作为控制器,我已经更新了我的答案,添加了一些我认为可行的代码。