2014-01-23 3 views
0

Я выбираю 3 отдельных результата из базы данных, используя оператор выбора 3 раза в набор данных. После этого я добавляю две строки и вставляю общую метку ниже второй строки и добавляю результат в следующую ячейку этой строки. Я хочу сортировать таблицу в порядке по убыванию на основе столбцов таблицы values.My кодКак отсортировать список datatable в C#?

List<DataTable> list_dt = new List<DataTable>(); 

for (int i = 0; i < ds.Tables.Count; i++) 
     { 
      score = TotalScore(ds.Tables[i]); 
      list_dt.Add(AddToDataTable(ds.Tables[i], score)); 
     } 

Проблема заключается в том, что, как сортировать таблицы на основе часов, так что я связать их с 3-х различных GridViews на основе часов.

public DataTable AddToDataTable(DataTable dt, double totalScore) 
{ 
    var rowTotal = dt.NewRow(); 
    rowTotal["FullName"] = "Total"; 
    rowTotal["Hours"] = totalScore; 

    dt.Rows.Add(rowTotal); 

    return dt; 
} 

public double TotalScore(DataTable dt) 
{ 
    double Hours = 0.0; 


    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     Hours += Convert.ToDouble(dt.Rows[i]["Hours"]); 
    } 

    return Hours; 
} 

ответ

-2

Может быть, вы можете использовать словарь: Click here for more info

Путь 2: изменить Sql команду и как это: выберите * от того времени на часах

Другой способ создать 2 ArrayList, а затем играть с индексы из 2 массивов

+0

Вы можете уточнить на любой из них, чтобы показать, как они на самом деле помочь OP? Словарь предназначен для поиска - он не поддерживает порядок. –

0

Вместо сортировки таблиц данных вы можете использовать Order By в своем запросе, чтобы отсортировать результат по часам по убыванию. Это просто и просто, потому что вы всегда сортируете свой результат по Хоу р.

+0

Это не сработает, потому что он получает 3 отдельных набора результатов;) –

+0

Он говорит: «Я выбираю 3 отдельных результата из базы данных, используя« select statement 3 times »в наборе данных. ' И проблема заключается в том, что проблема заключается в том, как сортировать таблицы на основе часов. – tarzanbappa

+0

Возможно, я ошибаюсь. Но вопросы: «как отсортировать список данных» (где один datatable - один набор результатов). И он также вычисляет сумму часов для каждого набора результатов. И это расчетное значение должно использоваться для сортировки. Или нет? –

1

Вы можете использовать одно из этих возможных решений для сортировки таблиц в своем списке в зависимости от общего количества часов.

var sortedTableList = (from table in list_dt 
    orderby Convert.ToDouble((from row in table.AsEnumerable() 
     where row.Field<string>("FullName") == "Total" 
     select row.Field<string>("Hours")) 
     .Single()) 
     /* place here the keyword "descending" for descending order */ 
    select table) 
    .ToList(); 

или

// replace "OrderBy" with "OrderByDescending" for descending order 
var sortedTableList = list_dt.OrderBy(table => 
    Convert.ToDouble(
     (table.AsEnumerable() 
     .Where(row => row.Field<string>("FullName") == "Total") 
     .Select(row => row.Field<string>("Hours")) 
     .Single()))) 
    .ToList(); 
Смежные вопросы