public static List <DocumentData> CompareContentControls(string fileName, List <DocumentContentControl> documentContentControls, List <DocumentData> documentDatasFromJson) { List <DocumentData> newDocumentDatas = new List <DocumentData>(); //записываю в new Data только те данные, которые соответствуют ContentControls в документе foreach (var item in documentContentControls) { if (item is FieldContentControl) { FieldDocumentData fieldDocumentData = null; foreach (var item1 in documentDatasFromJson) { if (item1 is FieldDocumentData) { if ((item1 as FieldDocumentData).Key == item.Field) { fieldDocumentData = (item1 as FieldDocumentData); //documentDatasFromJson.Remove(item1); break; } } } if (fieldDocumentData != null) { newDocumentDatas.Add(fieldDocumentData); } } if (item is ListContentControl) { ListDocumentData listDocumentData = null; foreach (var item1 in documentDatasFromJson) { if (item1 is ListDocumentData) { if ((item1 as ListDocumentData).Key == item.Field) { listDocumentData = (item1 as ListDocumentData); documentDatasFromJson.Remove(item1); break; } } } if (listDocumentData != null) { newDocumentDatas.Add(listDocumentData); } } if (item is TableContentControl) { TableDocumentData tableDocumentData = null; foreach (var item1 in documentDatasFromJson) { if (item1 is TableDocumentData) { if ((item1 as TableDocumentData).Key == item.Field) { tableDocumentData = (item1 as TableDocumentData); documentDatasFromJson.Remove(item1); break; } } } if (tableDocumentData != null) { newDocumentDatas.Add(tableDocumentData); } } } return(newDocumentDatas); }
public static void WriteJson(string fileNameJson, List <DocumentContentControl> documentContentControls) { #region Data to Json List <DocumentData> documentDatasToJson = new List <DocumentData>(); //записываю ContentControls в Data с пустыми данными для отдачи Data в json foreach (var item in documentContentControls) { if (item is FieldContentControl) { documentDatasToJson.Add(new FieldDocumentData(item.Field, "")); } if (item is ListContentControl) { ListDocumentData listDocumentData = new ListDocumentData(item.Field); foreach (var item1 in (item as ListContentControl).Fields) { FieldsDocumentData field = new FieldsDocumentData(item1.Field); field.Values.Add(""); listDocumentData.Fields.Add(field); } foreach (var item1 in (item as ListContentControl).Tables) { TableDocumentData tableDocumentData = new TableDocumentData(item1.Field); foreach (var item2 in (item1 as TableContentControl).Fields) { FieldsDocumentData field = new FieldsDocumentData(item2.Field); field.Values.Add(""); tableDocumentData.Fields.Add(field); } listDocumentData.Tables.Add(tableDocumentData); } documentDatasToJson.Add(listDocumentData); } if (item is TableContentControl) { TableDocumentData tableDocumentData = new TableDocumentData(item.Field); foreach (var item1 in (item as TableContentControl).Fields) { FieldsDocumentData field = new FieldsDocumentData(item1.Field); field.Values.Add(""); tableDocumentData.Fields.Add(field); } documentDatasToJson.Add(tableDocumentData); } } DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(List <DocumentData>)); //запись в json using (FileStream fs = new FileStream(fileNameJson, FileMode.CreateNew)) { jsonFormatter.WriteObject(fs, documentDatasToJson); } #endregion }