woordenboekwaarde per sleutel ophalen

Hoe kan ik de woordenboekwaarde per toets op functie krijgen?

Mijn functiecode (en het commando dat ik probeer werkt niet):

static void XML_Array(Dictionary<string, string> Data_Array)
{
    String xmlfile = Data_Array.TryGetValue("XML_File", out value);
}

Mijn knopcode:

private void button2_Click(object sender, EventArgs e)
{
    Dictionary<string, string> Data_Array = new Dictionary<string, string>();
    Data_Array.Add("XML_File", "Settings.xml");
    XML_Array(Data_Array);
}

Ik wil op de functie XML_Arrayde variabele zijn:

string xmlfile = "Settings.xml":

Antwoord 1, autoriteit 100%

Het is zo simpel als dit:

String xmlfile = Data_Array["XML_File"];

Merk op dat als het woordenboek geen sleutel heeft die gelijk is aan "XML_File", die code een uitzondering genereert. Als u eerst wilt controleren, kunt u TryGetValue als volgt gebruiken:

string xmlfile;
if (!Data_Array.TryGetValue("XML_File", out xmlfile)) {
   // the key isn't in the dictionary.
   return; // or whatever you want to do
}
// xmlfile is now equal to the value

Antwoord 2, autoriteit 31%

Waarom niet gewoon de sleutelnaam in het woordenboek gebruiken, C# heeft dit:

Dictionary<string, string> dict = new Dictionary<string, string>();
 dict.Add("UserID", "test");
 string userIDFromDictionaryByKey = dict["UserID"];

Als je naar de tip-suggestie kijkt:


Antwoord 3, autoriteit 11%

Zo werkt de TryGetValueniet. Het retourneert trueof falseop basis van of de sleutel is gevonden of niet, en stelt de parameter outin op de overeenkomstige waarde als de sleutel aanwezig is .

Als je wilt controleren of de sleutel er is of niet en iets wilt doen als deze ontbreekt, heb je zoiets als dit nodig:

bool hasValue = Data_Array.TryGetValue("XML_File", out value);
if (hasValue) {
    xmlfile = value;
} else {
    // do something when the value is not there
}

Antwoord 4, autoriteit 8%

Dictionary<String,String> d = new Dictionary<String,String>();
        d.Add("1","Mahadev");
        d.Add("2","Mahesh");
        Console.WriteLine(d["1"]);// it will print Value of key '1'

Antwoord 5, autoriteit 2%

static void XML_Array(Dictionary<string, string> Data_Array)
{
    String value;
    if(Data_Array.TryGetValue("XML_File", out value))
    {
     ... Do something here with value ...
    }
}

Antwoord 6

static String findFirstKeyByValue(Dictionary<string, string> Data_Array, String value)
{
    if (Data_Array.ContainsValue(value))
    {
        foreach (String key in Data_Array.Keys)
        {
            if (Data_Array[key].Equals(value))
                return key;
        }
    }
    return null;
}

Antwoord 7

         private void button2_Click(object sender, EventArgs e)
            {
                Dictionary<string, string> Data_Array = new Dictionary<string, string>();
                Data_Array.Add("XML_File", "Settings.xml");
                XML_Array(Data_Array);
            }
          static void XML_Array(Dictionary<string, string> Data_Array)
            {
                String xmlfile = Data_Array["XML_File"];
            }

Antwoord 8

Hier is een voorbeeld dat ik gebruik in mijn broncode.
Ik krijg sleutelen waardevan Dictionary van element 0 tot aantal elementen in mijn Dictionary. Dan vul ik mijn string [] array die ik als een parameter stuur in mijn functie die alleen params string accepteert []

Dictionary<string, decimal> listKomPop = addElements();
int xpopCount = listKomPop.Count;
if (xpopCount > 0)
{
    string[] xpostoci = new string[xpopCount];
    for (int i = 0; i < xpopCount; i++)
    {
        /* here you have key and value element */
        string key = listKomPop.Keys.ElementAt(i);
        decimal value = listKomPop[key];
        xpostoci[i] = value.ToString();
    }
...

Deze oplossing werkt ook met SortedDictionary.


Antwoord 9

Ik gebruik een vergelijkbare methode als die van dasblinkenlight in een functie om een enkele sleutelwaarde van een Cookie met een JSON-array te retourneren die als volgt in een Dictionary is geladen:

   /// <summary>
    /// Gets a single key Value from a Json filled cookie with 'cookiename','key' 
    /// </summary>
    public static string GetSpecialCookieKeyVal(string _CookieName, string _key)
    {
        //CALL COOKIE VALUES INTO DICTIONARY
        Dictionary<string, string> dictCookie =
        JsonConvert.DeserializeObject<Dictionary<string, string>>
         (MyCookinator.Get(_CookieName));
        string value;
        if (dictCookie.TryGetValue( _key, out value))
        {
            return value;
        }
        else
        {
            return "0";
        }
    }

Waarbij “MyCookinator.Get()” een andere eenvoudige cookiefunctie is die een algemene waarde van een http-cookie krijgt.


Antwoord 10

Dictionary<int,string> dict = new Dictionary<int,string>{
  {1,"item1"},
  {2,"item2"},
  {3,"item3"},
}
int key = 2 // for example
string result = dict.TryGetValue(key,out_) ? dict[key] : null;

Antwoord 11

if (Data_Array["XML_File"] != "") String xmlfile = Data_Array["XML_File"];

Other episodes