11
votes

C # Comment trier une liste triée par sa colonne de valeur

J'ai une liste triée générique "Résultats" avec la touche = Quelque nom de fichier et valeur = booléen.

Je voudrais trier la liste par la colonne Boolean Entry ou Value. Est-ce que quelqu'un sait comment je peux faire cela?

merci!


0 commentaires

4 Réponses :


13
votes

TritedList est optimisé de manière à ce que les inertions se produisent de manière ordonnée, de sorte que l'énumération se produise dans un ordre trié au coût minimal. Rien d'autre nécessite une nouvelle sorte. Ainsi:

        SortedList<string,bool> l = new SortedList<string, bool>();
        l.Add("a", true);
        l.Add("b", false);
        l.Add("c", true);
        l.Add("d", false);
        var orderByVal = l.OrderBy(kvp => kvp.Value);


1 commentaires

Vous ne pouvez pas ajouter le même élément à la liste deux fois. Jette une exception



2
votes

in .NET 2.0, vous pouvez ajouter vos articles à une sélection: xxx


1 commentaires

Le problème avec cette implémentation est que la valeur que vous souhaitez trier pourrait ne pas être unique comme dans la question de l'OP.



3
votes

pour descendre tous les éléments de la liste xxx

ou xxx


1 commentaires

Ceci est à propos de la liaison, pas la liste



0
votes

Normalement qui trié par la première clé de la liste, donc si vous échangez la clé et la valeur sur l'ajout, puis faites correspondre à la liaison. Cet exemple d'exemple j'utilise et travaille bien

public static SortedList<string, string> GetCountries(string conn)
        {
            var dict = new SortedList<string, string>();
            dict.Add("","Select One");
            var sql = "SELECT [CountryID]      ,[Descr]  FROM [dbo].[Countries] Order By CountryID ";
            using (var rd = GetDataReader(conn, sql))
            {
                while (rd.Read())
                {
                    dict.Add(rd["Descr"].ToString(), rd["CountryID"].ToString());
                }
            }
            return dict;
        }

Dim List As SortedList(Of String, String) = VDB.CoreLib.DbUtils.GetCountries(connDB)

        ddlBankCountry.DataSource = List
        ddlBankCountry.DataTextField = "Key"
        ddlBankCountry.DataValueField = "Value"
        ddlBankCountry.DataBind()


0 commentaires