Как выполнить итерацию по коллекции словаря, полученной из QueryHelpers.ParseQuery?

#c# #asp.net #.net-5

Вопрос:

Когда я позвоню

 QueryHelpers.ParseQuery(uri.Query);
 

он возвращается

 Dictionary<string, StringValues>
 

Когда я просматриваю эту коллекцию в окне «Локальные» Visual Studio, я вижу что-то вроде этого:

 Count = 4

{[q, {qOne, qTwo}]}
"q"
{qOne, qTwo}

{[selection, {sOne, sTwo}]}
"selection"
{sOne, sTwo}

{[color, {cOne, cTWo}]}
"color"
{cOne, cTwo}

{[option, {oOne, oTwo}]}
"option"
{oOne, oTwo}
 

Если я посмотрю документацию Microsoft, в StringValues ней говорится:

 GetEnumerator() - Retrieves an object that can iterate through the individual strings in this StringValues.
 

Это говорит мне о том, что я должен быть в состоянии сделать что-то подобное:

 Dictionary<string, StringValues> queryString = QueryHelpers.ParseQuery(uri.Query);

foreach(string key in queryString.Keys){
    Console.WriteLine("KEY: "   key);
    foreach(string value in queryString.Value[key].GetEnumerator()){
        Console.WriteLine("VALUE: "   value);
    }
}
 

Но для этого нет никакого варианта, queryString.Value[key] чтобы мне нужно было это сделать.

Итак, как мне повторить эту конкретную Dictionary<string, StringValues> коллекцию?

Комментарии:

1. Попробуй без .GetEnumerator() этого , просто foreach(string value in queryString.Value[key]) .

2. Удалить .GetEnumerator() , чтобы перечислить строки

3. Вы пишете queryString[s] двумя разными способами, это просто опечатка?

4. @RBarryYoung Да, опечатка. Мои извинения.

Ответ №1:

 Dictionary<string, StringValues> queryStrings = QueryHelpers.ParseQuery(uri.Query);

foreach(var stringValues in queryString.Values){
foreach(var value in stringValues)
Console.WriteLine("VALUE: "   value);
}
 

Если вам нужны ключи:

 Dictionary<string, StringValues> queryStrings = QueryHelpers.ParseQuery(uri.Query);

foreach(var key in queryString.Keys){
    Console.WriteLine("KEY: "   key);
    foreach(var value in queryString[key]){
        Console.WriteLine("VALUE: "   value);
    }
}
 

Комментарии:

1. Мне действительно тоже нужны были ключи. Фантастика, спасибо … Я совсем заблудился.