HI,
use this LinQ:
List<int> values = dataTable.AsEnumerable().Select(s => (s[fieldName] == DBNull.Value) ? 0 : s.Field<int>(fieldName)).OrderByDescending(d => d).ToList();
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Please am having a datagrid that grid that loads data directly from the database like this:
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;
}
}
}
![83826-11.jpg][1]
every thing works very fine while using this code method below;
public List<string> getRank(string fieldName)
{
List<string> positions = new List<string>();
List<int> values = dataTable.AsEnumerable().Select(s => s.Field<int>(fieldName)).OrderByDescending(d=>d).ToList();
for (int i = 0; i < dataTable.Rows.Count; i++)
{
int index = values.IndexOf(dataTable.Rows[i].Field<int>(fieldName));
positions.Add(AddOrdinal(index + 1));
}
return positions;
}
here is my button click event that calls the getRank Method Above;
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");
}
QUESTION:
but when a column happens to be NULL without any value from the MAIN LOADING WINDOW above when i try to cast it again i get this error saying:
![83922-33.png][3]
i want to allow NULL within this LOADING WINDOW programatically within my code method here
public List<string> getRank(string fieldName)
{
List<string> positions = new List<string>();
List<int> values = dataTable.AsEnumerable().Select(s => s.Field<int>(fieldName)).OrderByDescending(d=>d).ToList();
for (int i = 0; i < dataTable.Rows.Count; i++)
{
int index = values.IndexOf(dataTable.Rows[i].Field<int>(fieldName));
positions.Add(AddOrdinal(index + 1));
}
return positions;
}
but i cannot do this can someone teach me how to Fix this Error Please; (thanks)
[1]: /api/attachments/83826-11.jpg?platform=QnA [3]: /api/attachments/83922-33.png?platform=QnA
HI,
use this LinQ:
List<int> values = dataTable.AsEnumerable().Select(s => (s[fieldName] == DBNull.Value) ? 0 : s.Field<int>(fieldName)).OrderByDescending(d => d).ToList();