/// <summary> /// Inseire/Atualiza/Remove os registros da tabela verificando as diferenças entre o enum e o /// banco de dados /// </summary> public new void UpdateValues() { RaiseBeforeLoadValues(); var dblist = from obj in GetData().AsEnumerable() select new { ID = obj.Field <Int32>(KeyFields.First().Name), Description = obj.Field <string>(FieldsName.Description) }; var newList = InicialValues .Where(c => dblist.All(d => d.ID != c.Collumns[FieldsName.ID].GetInt32())) .ToList(); newList.SetState(eState.eAdd); var upList = InicialValues .Where(c => newList.All(p => c.Collumns[FieldsName.ID].GetInt32() != p.Collumns[FieldsName.ID].GetInt32()) && dblist.All(d => d.Description != c.Collumns[FieldsName.Description].GetString())).ToList(); upList.SetState(eState.eUpdate); newList.AddRange(upList); SaveLines(newList); RaiseAfterLoadValues(); }
private void CheckForNewsAditionalValues(string fieldName) { var dblist = from obj in GetData().AsEnumerable() select new { Id = obj[fieldName].To(obj[fieldName].GetType()) }; var newList = InicialValues .Where(item => !dblist.Any(c => c.Id.Equals(item.Collumns[fieldName].Value))) .ToList(); newList.SetState(eState.eAdd); SaveLines(newList.ToArray()); }