DataGridView filas seleccionadas a DataTable

Estoy intentando agregar solo las filas seleccionadas de un DataGridView a un DataTable, el código que estoy usando siempre comienza desde la primera fila, incluso si esta no está seleccionada ... ¿Alguien tiene una idea de cómo solucionarlo? ¿Por favor?

 DataTable dt = new DataTable("Rapport");

            //Generating columns to datatable:
            foreach (DataGridViewColumn column in dataGridView1.Columns)
                dt.Columns.Add(column.Name, typeof(string));

            //Adding selected rows of DGV to DataTable:
            for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
            {
                dt.Rows.Add();
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    dt.Rows[i][j] = dataGridView1[j, i].Value;
                }
            }

Respuestas a la pregunta(2)

Su respuesta a la pregunta