Comment puis-je trier la liste Générique avec Linq?
Comment puis-je trier myScriptCellsCount.MyCellsCharactersCount (liste type int) dans linq
public class MyExcelSheetsCells
{
public List<int> MyCellsCharactersCount { get; set; }
public MyExcelSheetsCells()
{
MyCellsCharactersCount = new List<int>();
}
}
void ArrangedDataList(DataTable dTable)
{
DAL.MyExcelSheets myexcelSheet = new DAL.MyExcelSheets();
myScriptCellsCount = new TestExceltoSql.DAL.MyExcelSheetsCells();
foreach (DataColumn col in dTable.Columns)
myexcelSheet.MyColumnNames.Add(col.ColumnName.ToString());
foreach(DataColumn dc in dTable.Columns)
foreach (DataRow dr in dTable.Rows)
myScriptCellsCount.MyCellsCharactersCount.Add(dr[dc].ToString().Length);
//How can i sort desc
//myScriptCellsCount.MyCellsCharactersCount = from list in myScriptCellsCount.MyCellsCharactersCount
// orderby list.CompareTo( descending
// select list;
CreatSqlTable(myexcelSheet.MyColumnNames, dTable.TableName, myScriptCellsCount.MyCellsCharactersCount[0].ToString());
myscript.WriteScript(myscript.SqlScripts);
}
OriginalL'auteur Penguen | 2010-06-17
Vous devez vous connecter pour publier un commentaire.
ou
OriginalL'auteur AxelEckenberger
Vous pouvez utiliser OrderBy ou de Tri, mais il y a une différence entre les 2 que vous devez comprendre:
Si vous ne trier, trier votre liste "en place", dans cet exemple, la variable "liste" soit trié:
Si vous faites une OrderBy, la liste d'origine n'est pas affectée, mais une nouvelle, triés énumérable est retourné:
Modifier
Cette réponse a été récemment upvoted, donc j'ai passé en revue. Dans ma réponse initiale, j'en ai laissé vraiment un détail important:
Si vous utilisez LINQ code ci-dessus (deuxième exemple), le tri va se produire chaque fois que vous effectuer une itération sur la variable "triés". Donc, si vous avez plus de 1 foreach, vous allez répéter le tri. Pour éviter cela, modifiez le code ci-dessus pour:
Qui va forcer l'agent recenseur à exécuter, et stocker le résultat dans triés.
Si vous allez seulement d'énumérer une fois, vous pouvez laisser de côté la ToList/ToArray appel.
OriginalL'auteur JMarsch
Vous devriez être en mesure d'utiliser la méthode OrderBy sur votre liste.
OriginalL'auteur brainimus
OriginalL'auteur Simon Barbour
Prendre un coup d'oeil à cette réponse. Vous pouvez remplacer "Processus" avec votre objet en obtenant typeOf votre Liste.
Acclamations
OriginalL'auteur joaopintocruz