コード例 #1
0
            /// <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);
                }
            }