/* Generate Dynamic Object according to Message Schema */ private ExpandoObject convertToMessageObj(int msgId, string msgJsonContent) { MessageCatalogSchema msgSchema; var L2EQuery = from a in this._messageCatalogSchemaList where a.MessageCatalogId == msgId select a; if (L2EQuery.Count() == 0) { throw new Exception("Not a valid Message Id"); //Message Id doens't apply on this IoT Device } else { msgSchema = L2EQuery.FirstOrDefault <MessageCatalogSchema>(); } ExpandoObject deviceMessage = new ExpandoObject(); JObject sourceMsg = JObject.Parse(msgJsonContent); foreach (var element in msgSchema.ElementList) { if (element.MandatoryFlag) { if (sourceMsg[element.Name] == null) { throw new Exception("Not a valid Message Schema, Missing: " + element.Name); } JSONHelper.AddExpandoObjectProperty(deviceMessage, element.Name, sourceMsg[element.Name]); } else { if (sourceMsg[element.Name] != null) { JSONHelper.AddExpandoObjectProperty(deviceMessage, element.Name, sourceMsg[element.Name]); } } } return(deviceMessage); }