C# 如何从查询字符串web api c中删除JSON中的第一个和最后一个方括号#
如何从结果中仅删除响应C# 如何从查询字符串web api c中删除JSON中的第一个和最后一个方括号#,c#,json,entity-framework-6,asp.net-web-api2,C#,Json,Entity Framework 6,Asp.net Web Api2,如何从结果中仅删除响应方括号-响应:[] public HttpResponseMessage GetDetail(int id) { var result = new Dictionary<string, object>(); EDetail EDetailobj = db.EDetails.FirstOrDefault(P => P.DetailID == id); if (EDetailobj != null)
方括号
-响应:[]
public HttpResponseMessage GetDetail(int id)
{
var result = new Dictionary<string, object>();
EDetail EDetailobj = db.EDetails.FirstOrDefault(P => P.DetailID == id);
if (EDetailobj != null)
{
result.Add("Status", "ok");
var responseResult = db.EDetails
.Where(x => x.DetailID == id)
.Select(x => new
{
x.DetailID ,
x.DetailName,
x.Qty,
x.Price,
});
result.Add("Response", responseResult);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
else
{
result.Add("Status", "failure");
return Request.CreateResponse(result);
}
}
{
"status": "ok",
"response": [
{
"detailID": 1,
"detailName": "whiteshirt",
"qty": 12,
"price": 21.0,
}
]
}
public HttpResponseMessage GetDetail(int-id)
{
var result=newdictionary();
EDetail EDetailobj=db.EDetails.FirstOrDefault(P=>P.DetailID==id);
如果(EDetailobj!=null)
{
结果。添加(“状态”、“确定”);
var responseResult=db.EDetails
.Where(x=>x.DetailID==id)
.选择(x=>new
{
x、 详细编号,
x、 详细名称,
x、 数量,
x、 价格,
});
结果。添加(“响应”,响应结果);
返回Request.CreateResponse(HttpStatusCode.OK,result);
}
其他的
{
结果。添加(“状态”、“失败”);
返回请求.CreateResponse(结果);
}
}
{
“状态”:“确定”,
“答复”:[
{
“detailID”:1,
“详细名称”:“白衬衫”,
“数量”:12,
“价格”:21.0,
}
]
}
在数据库查询中,您将返回与查询匹配的结果列表x.DetailID==id
。诚然,其中可能只有一个结果,但这并没有改变这样一个事实:Where
总是返回一个集合,而不是单个对象
现在,作为结果的一部分,返回包含单个项的列表。此列表被序列化为JSON,与您所看到的完全相同——作为包含单个对象的JSON数组(方括号)
如果要避免这种情况,请不要返回集合-返回单个对象:
var responseResult = db.EDetails
.Where(x => x.DetailID == id)
.Select(x => new
{
x.DetailID ,
x.DetailName,
x.Qty,
x.Price,
})
.SingleOrDefault();
在DB查询中,您将返回与查询匹配的结果列表
x.DetailID==id
。诚然,其中可能只有一个结果,但这并没有改变这样一个事实:Where
总是返回一个集合,而不是单个对象
现在,作为结果的一部分,返回包含单个项的列表。此列表被序列化为JSON,与您所看到的完全相同——作为包含单个对象的JSON数组(方括号)
如果要避免这种情况,请不要返回集合-返回单个对象:
var responseResult = db.EDetails
.Where(x => x.DetailID == id)
.Select(x => new
{
x.DetailID ,
x.DetailName,
x.Qty,
x.Price,
})
.SingleOrDefault();
只需使用First()或FirstOrDefault()即可
选择Single、SingleOrDefault、First和FirstOrDefault时,应注意以下几点:
如果希望在结果集包含多条记录时引发异常,请使用Single或SingleOrDefault
如果希望在结果集不包含任何记录时返回默认值,请使用SingleOrDefault
无论结果集包含什么,如果始终需要一条记录,请使用First或FirstOrDefault
如果结果集不包含任何记录,则需要默认值
与SingleOrDefault相比,FirstOrDefault通常执行得更快,因为它们会迭代集合,直到找到第一个匹配项。而SingleOrDefault迭代整个集合以查找单个匹配项
只需使用First()或FirstOrDefault()即可
选择Single、SingleOrDefault、First和FirstOrDefault时,应注意以下几点:
如果希望在结果集包含多条记录时引发异常,请使用Single或SingleOrDefault
如果希望在结果集不包含任何记录时返回默认值,请使用SingleOrDefault
无论结果集包含什么,如果始终需要一条记录,请使用First或FirstOrDefault
如果结果集不包含任何记录,则需要默认值
与SingleOrDefault相比,FirstOrDefault通常执行得更快,因为它们会迭代集合,直到找到第一个匹配项。而SingleOrDefault迭代整个集合以查找单个匹配项
您不应该首先返回此词典,而应该仅返回
responseResult
,并在响应消息中返回正确的HTTP状态代码。之所以添加括号,是因为您没有使用FirstOrDefault()
。首先不应返回此词典,而应仅返回responseResult
,并在响应消息中返回正确的HTTP状态代码。之所以添加括号,是因为您没有使用FirstOrDefault()
。