我使用MySQL
DB创建了一个WEB API。 API运行良好。代码在
try
{
var before = dt.AddMinutes(-5);
var after = dt.AddMinutes(5);
var result = medEntitites.tj_xhqd
.Where(m =>
m.zdjh == msn &&
m.sjsj >= before &&
m.sjsj <= after).Select(m => new { MSN = m.zdjh, DateTime = m.sjsj, Signal_Strength = m.xhqd }).Distinct();
return Request.CreateResponse(HttpStatusCode.OK, new { data = result });
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
,响应低于
{
"data": [
{
"MSN": "002999000076",
"DateTime": "2017-10-11T10:16:48",
"Signal_Strength": "15"
},
{
"MSN": "002999000076",
"DateTime": "2017-10-11T10:19:02",
"Signal_Strength": "15"
},
{
"MSN": "002999000076",
"DateTime": "2017-10-11T10:20:58",
"Signal_Strength": "16"
},
{
"MSN": "002999000076",
"DateTime": "2017-10-11T10:22:54",
"Signal_Strength": "15"
}
]}
它是如何工作的?
我正在传递一个仪表序列号和一个日期时间。 API接收它们。 + - 时间分钟并显示该时间的所有记录。
现在我想要的是,如果在某个特定时间存在任何记录,那么API将发送给我YES
作为回应,如果没有找到记录,那么它将发送给我NO
。
样本回复应为
{
"data": [
{
"Response": "YES"/"NO"
}
]
}
我搜索过它的解决方案但无法找到一个
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
创建以下类
public class ResponseChecker
{
public string Response{get; set;};
public ResponseChecker(IEnumerable result)
{
if(result.ToList().Count > 0)
Response = "YES";
else
Response = "NO";
}
}
修改您的代码,如下所示
try
{
var before = dt.AddMinutes(-5);
var after = dt.AddMinutes(5);
var result = medEntitites.tj_xhqd
.Where(m =>
m.zdjh == msn &&
m.sjsj >= before &&
m.sjsj <= after).Select(m => new { MSN = m.zdjh, DateTime = m.sjsj, Signal_Strength = m.xhqd }).Distinct();
return Request.CreateResponse(HttpStatusCode.OK, new { data = new ResponseChecker(result) });
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
答案 1 :(得分:0)
这样的事情应该有效:
var before = dt.AddMinutes(-5);
var after = dt.AddMinutes(5);
bool anyRecords = medEntitites.tj_xhqd.Any(m =>
m.zdjh == msn &&
m.sjsj >= before &&
m.sjsj <= after);
return Request.CreateResponse(HttpStatusCode.OK, new
{
data = new[]
{
new { Response = anyRecords ? "YES" : "NO" }
}
});
对我来说反应似乎有些过分。为什么只需要返回单个标志的单元素对象数组?