protected decimal? GetExistingEntity(string tableName, decimal? listing_id, List<Dictionary<string,object>> mapping, List<string> row, List<string> header) { OracleRepository repo = new OracleRepository(); if (mapping.Count() > 0) { var keys = mapping.Where(x => x.ContainsKey("IS_KEY") && x["IS_KEY"] != DBNull.Value && Convert.ToInt32(x["IS_KEY"]) == 1); var colKeys = new Dictionary<string, object>(); if (listing_id!=null) { colKeys.Add("LISTING_ID", listing_id.Value); } foreach (var k in keys) { int parsedOrdinal = 0; int useHeader = 0; if (k["ORDINAL"]!=DBNull.Value && int.TryParse(k["ORDINAL"].ToString(), out parsedOrdinal )) { if (row.Count() > parsedOrdinal) { if (k["DATA_TYPE"]!=DBNull.Value && k["DATA_TYPE"].ToString().StartsWith("DATE")) { double parseOADate = 0; if (!String.IsNullOrEmpty(row[parsedOrdinal].ToString()) && double.TryParse(row[parsedOrdinal].ToString(), out parseOADate)) { colKeys.Add(k["COLUMN_NAME"].ToString(), DateTime.FromOADate(parseOADate)); } else { if (k["DATA_TYPE"].ToString() != "DATE_ONLY") { colKeys.Add(k["COLUMN_NAME"].ToString(), row[parsedOrdinal]); } } } else if (k["DATA_TYPE"] != DBNull.Value && k["DATA_TYPE"].ToString() == "NUMBER") { if (IsNumeric(row[parsedOrdinal])) { colKeys.Add(k["COLUMN_NAME"].ToString(), row[parsedOrdinal]); } } else { colKeys.Add(k["COLUMN_NAME"].ToString(), row[parsedOrdinal]); } } } if (k["USE_HEADER_AS_NAME"]!=DBNull.Value && int.TryParse(k["USE_HEADER_AS_NAME"].ToString(), out useHeader)) { if (useHeader ==1) { colKeys.Add("NAME", header[parsedOrdinal]); } } } return repo.GetEntityID(tableName, colKeys) as decimal?; } return null; }