Please check this code:
public partial class MainWindow : Window
{
private DataTable dataTable;
private DataTable resDataTable;
public MainWindow()
{
InitializeComponent();
dataTable = GetDataTable();
dataGrid.ItemsSource = dataTable.DefaultView;
}
public DataTable GetDataTable()
{
string connString = @"";
using (SqlConnection sqlConnection = new SqlConnection(connString))
{
sqlConnection.Open();
using (SqlCommand command = new SqlCommand("select * from scoretable",sqlConnection))
{
DataTable dataTable = new DataTable();
dataTable.Load(command.ExecuteReader());
return dataTable;
}
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
resDataTable = new DataTable();
resDataTable.Columns.Add("id", typeof(string));
for (int i = 1; i < dataTable.Columns.Count; i++)
{
resDataTable.Columns.Add(dataTable.Columns[i].ColumnName, typeof(string));
}
List<string> mathRank = getRank("Math");
List<string> scienceRank = getRank("Science");
List<string> englishRank = getRank("English");
List<string> historyRank = getRank("History");
for (int i = 0; i < mathRank.Count; i++)
{
resDataTable.Rows.Add(dataTable.Rows[i]["id"], dataTable.Rows[i]["name"], mathRank[i], scienceRank[i], englishRank[i], historyRank[i]);
}
dataGrid1.ItemsSource = resDataTable.DefaultView;
}
public void insertIntoDB(DataTable dataTable)
{
string connString = @"";
using (SqlConnection sqlConnection = new SqlConnection(connString))
{
sqlConnection.Open();
string createTableSql = "if not exists (select * from sysobjects where name='scoreRankTable' and xtype='U')" +
"CREATE TABLE scoreRankTable(" +
" Id int," +
"Name varchar(50)," +
"Math varchar(10)," +
"Science varchar(10)," +
"English varchar(10)," +
"History varchar(10)," +
");";
using (SqlCommand command = new SqlCommand(createTableSql, sqlConnection))
{
command.ExecuteNonQuery();
command.CommandText = "delete from scoreRankTable";
command.ExecuteNonQuery();
}
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnection))
{
bulkCopy.DestinationTableName =
"dbo.scoreRankTable";
try
{
bulkCopy.WriteToServer(dataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
public List<string> getRank(string fieldName)
{
List<string> positions = new List<string>();
List<double> values = dataTable.AsEnumerable().Select(s => s.Field<double>(fieldName)).OrderByDescending(d=>d).ToList();
for (int i = 0; i < dataTable.Rows.Count; i++)
{
int index = values.IndexOf(dataTable.Rows[i].Field<double>(fieldName));
positions.Add(AddOrdinal(index + 1));
}
return positions;
}
public string AddOrdinal(int num)
{
if (num <= 0) return num.ToString();
switch (num % 100)
{
case 11:
case 12:
case 13:
return num + "th";
}
switch (num % 10)
{
case 1:
return num + "st";
case 2:
return num + "nd";
case 3:
return num + "rd";
default:
return num + "th";
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
insertIntoDB(resDataTable);
MessageBox.Show("Insert success!")
}
}
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.