| | |
| | | erro.ErrorCont = "模板表头带*的列中存在空值,第" + (rowIndex + 1).ToString() + "行,必填字段:"+ emptyColumn.ColumnName +"为空"; |
| | | list.Add(erro); |
| | | } |
| | | if (excelTable[i].Columns.Cast<DataColumn>().Any(column => column.ColumnName.Contains("M"))) |
| | | { |
| | | var duplicateColumn = excelTable[i].Columns.Cast<DataColumn>().FirstOrDefault( |
| | | column => column.ColumnName.Contains("M") && excelTable[i].AsEnumerable().GroupBy(row => new { Field1 = row[column], Field2 = column.ColumnName.Contains("唯一") }).Any(group => group.Count() > 1)); |
| | | if (duplicateColumn != null) |
| | | { |
| | | int columnIndex = excelTable[i].Columns.IndexOf(duplicateColumn); |
| | | var duplicateRows = excelTable[i].AsEnumerable() |
| | | .Where(row => row[duplicateColumn] != DBNull.Value) |
| | | .GroupBy(row => row[duplicateColumn]) |
| | | .Where(group => group.Count() > 1) |
| | | .SelectMany(group => group.ToList()) |
| | | .ToList(); |
| | | foreach (var row in duplicateRows) |
| | | { |
| | | ExcelErro erro = new ExcelErro(); |
| | | erro.RoeNumber = excelTable[i].Rows.IndexOf(row).ToString(); |
| | | erro.ErrorField = duplicateColumn.ColumnName; |
| | | erro.ErrorCont = "模板表头字段:" + duplicateColumn.ColumnName + "下同一值,对应带(唯一)的列中存在重复值"; |
| | | list.Add(erro); |
| | | |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var duplicateColumn = excelTable[i].Columns.Cast<DataColumn>().FirstOrDefault( |
| | | column => column.ColumnName.Contains("唯一") && excelTable[i].AsEnumerable().GroupBy(row => row[column]).Any(group => group.Count() > 1)); |
| | | if (duplicateColumn != null) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | return list; |
| | | } |
| | | #endregion |