J'ai une liste triée générique "Résultats" avec la touche = Quelque nom de fichier et valeur = booléen. p>
Je voudrais trier la liste par la colonne Boolean Entry ou Value. Est-ce que quelqu'un sait comment je peux faire cela? P>
merci! p>
4 Réponses :
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);
Vous ne pouvez pas ajouter le même élément à la liste deux fois. Jette une exception
in .NET 2.0, vous pouvez ajouter vos articles à une sélection:
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.
ou p>
Ceci est à propos de la liaison, pas la liste
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()