Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过datetime元素在c中获取和存储json数据中的倒数第二个订单_C#_Json_Asp.net Mvc_Entity Framework_Linq - Fatal编程技术网

C# 如何通过datetime元素在c中获取和存储json数据中的倒数第二个订单

C# 如何通过datetime元素在c中获取和存储json数据中的倒数第二个订单,c#,json,asp.net-mvc,entity-framework,linq,C#,Json,Asp.net Mvc,Entity Framework,Linq,当我期望一条记录是json数据的倒数第二条记录时,我收到了多条记录 有人对我可能做得不正确有什么建议吗 样本数据: { "timestamp":"2017-03-17T17:33:09.156Z", "dataFrame":"VGVtcDoyOC43MA==", "fcnt":318, "port":2, "rssi":-107, "snr":0.8, "sf_used":7, "id":1489771989156, "decrypted

当我期望一条记录是json数据的倒数第二条记录时,我收到了多条记录

有人对我可能做得不正确有什么建议吗

样本数据:

{  
   "timestamp":"2017-03-17T17:33:09.156Z",
   "dataFrame":"VGVtcDoyOC43MA==",
   "fcnt":318,
   "port":2,
   "rssi":-107,
   "snr":0.8,
   "sf_used":7,
   "id":1489771989156,
   "decrypted":true
},
{  
   "timestamp":"2017-03-17T17:33:16.614Z",
   "dataFrame":"SHVtOjQzLjA0",
   "fcnt":319,
   "port":2,
   "rssi":-108,
   "snr":2.8,
   "sf_used":7,
   "id":1489771996614,
   "decrypted":true
}
代码:


上面的代码只返回多条记录,但我正在尝试获取每次运行此代码时返回的倒数第二条记录。

我正在重写。根据评论,我认为您需要更像下面这样的东西,但这不是必需的:

List<PIRDetail> Pirs = Newtonsoft.Json.JsonConvert.DeserializeObject <List<PIRDetail>>(responseString);
var item = Pirs[Pirs.Count -2];

byte[] data = Convert.FromBase64String(item.dataFrame.ToString());
PIRDetailsViewModel binModel = new PIRDetailsViewModel();
binModel.deviceid = deviceID;
binModel.status = Convert.ToString(Encoding.UTF8.GetString(data).Substring(4));                        
binModel.UpdatedTime = TimeZoneInfo.ConvertTimeFromUtc(item.timestamp, TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")).ToString();
model.Add(binModel);

所以为了澄清,您需要获取第一条记录,其中dataFrame=VGVtcDoyOC43MA==?catch Exception Ex{}不要这样做:您正在隐藏软件问题。如果您没有任何有意义的方法来处理异常,请不要捕获它。我有几百个元素。在最后一个元素中,最后一个-1元素。这只是一个样本数据VGVtcDoyOC43MA==我需要哪个记录。它总是倒数第二?或者它有时需要处理是否是倒数第3个N吗?不,它将始终是倒数第二个唯一的顺序,降序时间vgvTcdoyoC43Ma==它意味着温度:28.70,作为我们的答案,我们在哪里得到这个值,我们正在存储。但我的要求是包含VGVtcDo的最后一条记录。因为实时温度值发生变化。此代码仍然提供正确的记录。您正在查找名为dataFrame的属性。所以,你只要抓住它。。。我会修改的。修改,我想如果我理解正确的话,那就是你想要的。如果没有,请告诉我。我想我理解你的意图,但可能是错的。我把它改成依赖于数据的一切都在If中。问题你是不是循环浏览所有这些记录,只为了找到倒数第二个?如果是这样,您根本不需要循环。你可以把它编入索引。。。基本上,如果您要将所有的binModel代码移动到if。。。只要去掉这个循环,取Pirs[Count-2]。[Variables]是的,我只想要倒数第二到最后一个。我需要删除每个循环吗。什么是高效的代码,你能编辑我的代码吗
List<PIRDetail> Pirs = Newtonsoft.Json.JsonConvert.DeserializeObject <List<PIRDetail>>(responseString);
var item = Pirs[Pirs.Count -2];

byte[] data = Convert.FromBase64String(item.dataFrame.ToString());
PIRDetailsViewModel binModel = new PIRDetailsViewModel();
binModel.deviceid = deviceID;
binModel.status = Convert.ToString(Encoding.UTF8.GetString(data).Substring(4));                        
binModel.UpdatedTime = TimeZoneInfo.ConvertTimeFromUtc(item.timestamp, TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")).ToString();
model.Add(binModel);