如何将 JSON 从 Linq 返回到实体查询
本文关键字:返回 实体 查询 Linq JSON | 更新日期: 2023-09-27 18:36:58
我很难理解从我的控件中的查询返回 json 的选项,因为似乎有很多方法可以做到这一点。如有任何澄清,将不胜感激。
我想从以下方面返回 json:
public class MyController : ApiController
{
private MyEntities context = new MyEntities();
public IQueryable <string> Get()
{
var query =
from MY_ENTITY_1 in my_entity_1
from MY_ENTITY_2 in my_entity_2
from MY_ENTITY_3 in my_entity_3
where
MY_ENITITY_1.something == MY_ENTITY_2.something
select new
{
Result1 = MY_ENTITY_1.FOO1,
Result2 = MY_ENTITY_2.FOO2,
Result3 = MY_ENTITY_3.FOO3
};
foreach (var myResults in query)
{
Console.WriteLine(myResults);
};
return myResults; // JSON?
}
我的
理解是,当调用这些操作时,ApiController
会自动将返回的对象转换为JSON:
public IQueryable <MyGetResult> Get()
{
var query =
from MY_ENTITY_1 in my_entity_1
from MY_ENTITY_2 in my_entity_2
from MY_ENTITY_3 in my_entity_3
where
MY_ENITITY_1.something == MY_ENTITY_2.something
select new MyGetResult
{
Result1 = MY_ENTITY_1.FOO1,
Result2 = MY_ENTITY_2.FOO2,
Result3 = MY_ENTITY_3.FOO3
};
return query;
}
public class MyGetResult
{
public Foo Result1 {get;set;}
public Foo Result2 {get;set;}
public Foo Result3 {get;set;}
}
WebAPI 使用称为"内容协商"的策略来确定调用方想要的数据类型,并相应地自动序列化结果。
从ApiController
看来您正在使用WebAPI
.您不必从方法返回 JSON 或 XML,而只需返回对象即可。调用方负责指定返回数据类型。
例如,如果您通过 IE 浏览到您的服务,您将获得 JSON 返回,因为 IE 使用 JSON 作为默认返回类型。如果您在 Chrome 中浏览相同的网址,您将获得 XML
,因为这是 Chrome 的默认设置,如果请求ContentType: application/json
则取决于请求的ContentType
,然后您将获得 JSON。