private void addItem(SPListItem li, SortedList arrGTemp)
        {
            Guard.ArgumentIsNotNull(arrGTemp, nameof(arrGTemp));
            Guard.ArgumentIsNotNull(li, nameof(li));

            var tempGroup = new string[1] {
                null
            };

            if (arrGroupFields != null)
            {
                foreach (var groupBy in arrGroupFields)
                {
                    var field    = list.Fields.GetFieldByInternalName(groupBy);
                    var newGroup = getField(li, groupBy, true);

                    try
                    {
                        newGroup = formatField(newGroup, groupBy, field.Type == SPFieldType.Calculated, true, li);
                    }
                    catch (Exception exception)
                    {
                        DiagTrace.WriteLine(exception);
                    }

                    if (string.IsNullOrWhiteSpace(newGroup))
                    {
                        newGroup = $" No {field.Title}";
                    }

                    GroupHelper.ProcessTempGroups(arrGTemp, field, newGroup, ref tempGroup);
                }
            }

            arrItems.Add($"{li.ParentList.ParentWeb.ID}.{li.ParentList.ID}.{li.ID}", tempGroup);
            queueAllItems.Enqueue(li);
        }
        private void addItem(DataRow dr, SortedList arrGTemp, SPWeb curWeb)
        {
            Guard.ArgumentIsNotNull(curWeb, nameof(curWeb));
            Guard.ArgumentIsNotNull(arrGTemp, nameof(arrGTemp));
            Guard.ArgumentIsNotNull(dr, nameof(dr));

            dtTemp = new DataTable();
            dtTemp.Columns.Add("WebId");
            dtTemp.Columns.Add("ListId");
            dtTemp.Columns.Add(IdText);
            dtTemp.Columns.Add(TitleText);
            dtTemp.Columns.Add("SiteUrl");
            dtTemp.Columns.Add("SiteId");
            dtTemp.Columns.Add(ProjectText);
            dtTemp.Columns.Add("TSDisableItem");
            dtTemp.Columns.Add(ListText);

            dtTemp.Rows.Add(
                dr[WebUId].ToString(),
                dr[ListUId].ToString(),
                dr[ItemId].ToString(),
                dr[TitleText].ToString(),
                curWeb.Site.ServerRelativeUrl,
                curWeb.Site.ID,
                dr[ProjectText].ToString(),
                1,
                dr[ListText].ToString());

            var counter = 9;

            foreach (var drCol in dsTSMeta.Tables[0]
                     .Select($"list_uid=\'{dr[ListUId]}\' and item_id={dr[ItemId]}")
                     .Where(drCol => !dtTemp.Columns.Contains(drCol[ColumnNameText].ToString())))
            {
                dtTemp.Columns.Add(drCol[ColumnNameText].ToString());
                dtTemp.Rows[0][counter] = drCol[ColumnValueText].ToString();
                counter++;
            }

            var tempGroup = new string[1] {
                null
            };

            if (arrGroupFields != null)
            {
                foreach (var groupBy in arrGroupFields)
                {
                    var field    = list.Fields.GetFieldByInternalName(groupBy);
                    var newGroup = string.Empty;

                    try
                    {
                        newGroup = dr[groupBy].ToString();
                        newGroup = formatField(newGroup, groupBy, dr, true);
                    }
                    catch (Exception exception)
                    {
                        DiagTrace.WriteLine(exception);
                    }

                    if (string.IsNullOrWhiteSpace(newGroup))
                    {
                        newGroup = $" No {field.Title}";
                    }

                    GroupHelper.ProcessTempGroups(arrGTemp, field, newGroup, ref tempGroup);
                }
            }

            arrItems.Add($"{dr[WebUId]}.{dr[ListUId]}.{dr[ItemId]}", tempGroup);
            queueAllItems.Enqueue(dtTemp.Rows[0]);
        }