Outils pour utilisateurs

Outils du site


lang:csharp:dictionary

Trouver une clé depuis une valeur

Nécessite Linq et de parcourir toute la liste.

IEnumerable<KeyValuePair<FlowLayoutPanel, IHMPanel>> items = liste.Where(f => f.Value.Name.StartsWith("Plop"));

Mettre un KeyValuePair à null

Si une fonction renvoie un KeyValuePair, il peut être nécessaire de renvoyer la valeur null. Mais KeyValuePair ne peut pas. A la place, il faut utiliser default(KeyValuePair<T,U>) et ensuite comparer la valeur de retour avec retour.Equals(default(KeyValuePair<T,U>)).

SortedDictionary avec une class comme clé

La classe (ici, une structure)

private struct KeyIni
{
    public string Section;
    public string Key;
}

La fonction de comparaison, avec x la nouvelle valeur et y la valeur à comparer. Pour insérer x avant y, il faut renvoyer -1, pour insérer x après y, il faut renvoyer 1 et si x est identique à y, il faut renvoyer 0. Si cette fonction renvoie 0, une exception de type ArgumentException sera déclenchée.

private class SortKeyIni : IComparer<KeyIni>
{
    public int Compare(KeyIni x, KeyIni y)
    {
        // On compare x par rapport à y.
        int compareVal = x.Section.CompareTo(y.Section);
 
        // Est-ce que les sections sont différentes ?
        if (compareVal != 0)
        {
            return compareVal;
        }
        // Si les sections sont différentes, on compare les clés.
        else
        {
            return x.Key.CompareTo(y.Key);
        }
    }
}

Déclaration du dictionnaire trié.

SortedDictionary<KeyIni, string> keyPairs = new SortedDictionary<KeyIni, string>(new SortKeyIni());
lang/csharp/dictionary.txt · Dernière modification : 2017/01/04 15:03 de root