Mamy dwie kolumny w a DataTable
, tak:
COL1 COL2
Abc 5
Def 8
Ghi 3
Próbujemy posortować to datatable
według COL2
malejącej kolejności.
COL1 COL2
ghi 8
abc 4
def 3
jkl 1
Próbowaliśmy tego:
ft.DefaultView.Sort = "COL2 desc";
ft = ft.DefaultView.ToTable(true);
ale bez użycia a DataView
, chcemy posortować DataTable
sam, a nie DataView
.
To ci pomoże ...
źródło
Jego proste użycie. Wybierz funkcję.
I gotowe ...... Miłego kodowania
źródło
Select("", "CompanyName ASC")
.Może poniższe wskazówki mogą pomóc:
Tutaj możesz również użyć innych zapytań wyrażeń Lambda.
źródło
Czy próbowałeś użyć
Select(filterExpression, sortOrder)
metody w DataTable? Zobacz tutaj przykład. Zwróć uwagę, że ta metoda nie posortuje tabeli danych w miejscu, jeśli tego właśnie szukasz, ale zwróci posortowaną tablicę wierszy bez korzystania z widoku danych.źródło
Lub, jeśli możesz użyć
DataGridView
, możesz po prostu zadzwonićSort(column, direction)
:Co dałoby pożądany rezultat:
źródło
źródło
Istnieją dwa sposoby sortowania danych
1) sortowanie samych danych i wypełnienie siatki:
2) domyślny widok sortowania, podobny do sortowania z nagłówkiem kolumny siatki:
źródło
DataRow[] rows = dt.Rows.Cast<DataRow>().OrderBy(row => row.Field<string>("FIELD_NAME"), MyCustomComparer.Instance).ToArray();
Okazuje się, że istnieje specjalny przypadek, w którym można to osiągnąć. Sztuczka polega na tym, że podczas budowania DataTable zebrać wszystkie wiersze na liście, posortować je, a następnie dodać. Ta sprawa właśnie się pojawiła.
źródło
// Mam nadzieję, że to ci pomoże ...
źródło
TL; DR
posługiwać się
tableObject.Select(queryExpression, sortOrderExpression)
wybierz posortowane daneKompletny przykład
Kompletny przykład roboczy - można przetestować w aplikacji konsolowej :
Wynik
źródło
Spróbuj tego:
źródło
DataTable sortedDT = new DataTable()
. 2) Musisz użyćImportRow
(nie możesz dodać wiersza z innej tabeli)