/// <summary> /// Creates multiple update rows /// </summary> /// <param name="rows">A list of <see cref="SQLUpdateRow"/> rows</param> public SQLUpdate(List <SQLUpdateRow> rows) { Rows = new List <SQLUpdateRow>(); if (rows.Count == 0) { return; } Rows.AddRange(rows.Where(row => row.WhereClause.Count != 1)); var vals = rows .Where(row => row.WhereClause.Count == 1) .GroupBy(row => row.Values, row => row, new DictionaryComparer()); foreach (IGrouping <Dictionary <string, object>, SQLUpdateRow> grouping in vals) { if (!grouping.Any()) { continue; } if (grouping.First().WhereClause.Count == 0) { continue; } var updateRow = new SQLUpdateRowMultiple1(grouping.First().WhereClause[0].Key) { Table = SQLUtil.RemoveBackQuotes(grouping.First().Table) }; foreach (var value in grouping.First().Values) { updateRow.AddValue(SQLUtil.RemoveBackQuotes(value.Key), value.Value); } foreach (var row in grouping) { foreach (var value in row.WhereClause) { updateRow.AddWhere(value.Value, row.Comment); } } Rows.Add(updateRow); } }