#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. Мне действительно тоже нужны были ключи. Фантастика, спасибо … Я совсем заблудился.