web-dev-qa-db-fra.com

Tri du tableau de données par plusieurs colonnes à l'aide de C #

J'ai un Datatable avec des colonnes nommées foldername, documentname. Données comme ci-dessous:

FolderName  DocumentName
Folder1     HR[D] Document
Folder1     ___----'
Folder1     Asp_example.pdf
Folder2     SD
Folder3     Heavy_weight
Folder3     Accesorial Services

Comment alphabetically trier DocumentName en fonction de FolderName dans .Net Framework 2.0.

La solution que nous avons essayée est la suivante mais prend trop de temps car elle contient plus de 1200 000 enregistrements.

int counter=0;

while (counter < searchDT.Rows.Count){
   string FolderName = Convert.ToString(searchDT.Rows[counter]["Folder Name"]);

   string exp = "[Folder Name] like '" + FolderName + "'";

   if (FolderName.Contains("%") || FolderName.Contains("_") || FolderName.Contains("[]") ||      FolderName.Contains("'"))

      exp = "[Folder Name] like '" + EscapeLikeValue(FolderName) + "'";

   string sortExpression = "[Document Name] ASC";

   DataRow[] drfoldername = searchDT.Select(exp, sortExpression);

   foreach (DataRow row in drfoldername)
     drfoldernameDT.ImportRow(row);

   counter += drfoldername.Length;

 }
7
user1931665
        DataTable dt= new DataTable();

        DataView dv = new DataView(dt);
        dv.Sort = "FolderName, DocumentName ASC";

Essayez ça. Il va d'abord trier FolderName, puis DocumentName.

Si vous devez envoyer cela à un composant de l'écran, vous pouvez procéder comme vous le faites avec un DataTable.

38
André Silva

Voici ma solution à ce problème:

Datatable FI = new Datatable();
DataView viewFI = new DataView(FI);
viewFI.Sort = "ServiceDate, ServiceRoute";
DataTable OFI= viewFI.ToTable();
2
Scooter

Avez-vous essayé DataView.Sort?

dt.DefaultView.RowFilter = "FolderName , DocumentName ASC";
dt = dt.DefaultView.ToTable();
2
İbrahim ULUDAĞ

Vous pouvez utiliser 

oDataSet.Tables[0].DefaultView.Sort = "Column1 ASC ";
0
Amit Kumar Verma

Si vous liez le dgv en utilisant un datatable, vous pouvez utiliser quelque chose comme:

DataTable dtable = (DataTable) dgv.DataSource; Dtable.DefaultView.Sort =

Vous pouvez aussi vérifier ceci:

http://www.codeproject.com/csharp/datagridsort.asp

merci 

0
Syed Fahad Ali