Я пытаюсь записать значения в файл, используя Immediate Window
в Visual Studio 2017.
У меня есть переменная с именем _myItems
, которая имеет тип Dictionary<int, Dictionary<int, List<int>>>
.
Я нажал breakpoint
, где эта переменная находится в области видимости.Я могу запустить
?_myItems
в окне, и я получу список вроде:
Count = 9
[0]: {[536], System.Collections.Generic.Dictionary`2[System.Int32,System.Collections.Generic.List`1[System.Int32]]]}
[1]... omitted for clearance
... omitted for clearance
... omitted for clearance
[8]... omitted for clearance
Чтобы убедиться, что я могу записать файл в непосредственном окне, я запустил:
File.WriteAllText("test.txt", "testing purposes");
Который записал файл, поэтому я уверен, что могу записать в файл оттуда.
Затем я попытался сделать следующее:
?(foreach (KeyValuePair<int, Dictionary<int, List<int>>> pair in _myItems) { foreach (KeyValuePair<int, List<int>> valuePair in pair.Value) { foreach (int numberToWrite in valuePair.Value) { File.AppendAllText("test.txt",numberToWrite.ToString()); } }})
Но я получаю следующую ошибку:
ошибка CS1525: Неверное выражение выражение 'foreach'
При поиске я наткнулся на этот вопрос ноВ принятом ответе только утверждается, что вы можете это сделать.
Как я могу запустить этот цикл foreach
в Immediate Window, чтобы записать значения в файл.
Обратите внимание, что я знаю, что должен был сделать это внутри своего кода, ноЯ не думал, что мне понадобятся значения позже.Я просто проверял среднее.Когда я закончил использовать приложение, которое написал, я решил использовать эти значения.Поскольку время подготовки значений занимает часы и часы, невозможно просто остановить выполнение и переписать то, что мне нужно в моем коде, и снова пройти весь процесс.
Я также знаю, что яможно запустить
?_myItems[536][0]
Затем скопировать значения вручную в файл.Этот процесс также займет много времени, так как есть много списков, и я хотел бы избежать этого.
Есть ли возможность заставить это работать в ближайшем окне?
Обновление :
Я сделал так, как предлагалось в ответах:
_myItems.Select(x => x.Value)
.ToList()
.ForEach(pair => pair
.ToList()
.ForEach(valuePair => valuePair
.Value
.ForEach(numberToWrite => File.AppendAllText("test.txt", numberToWrite.ToString()))))
Я получил следующую ошибку:
Оценка метода System.Collections.Generic.List`1 [System.Collections.Generic.Dictionary`2 [System.Int32, System.Collections.Generic.List`1 [System.Int32]]]. ForEach () вызывает в nativeМетод Microsoft.Win32.Win32Native.GetFullPathName ().Оценка собственных методов в этом контексте не поддерживается.
Я даже пытался просто Debug.Print
мои значения, например, такие как:
_myItems.ToList().ForEach(pair => System.Diagnostics.Debug.Print(pair.Key));
И в итоге я получилта же ошибка выше.На этот раз с ошибкой вызова собственного метода:
System.Diagnostics.Debugger.IsLogging ()
Я искал эту ошибку и в соответствии с thisответ предлагается установить флажок Использовать управляемый режим совместимости в параметрах отладки.Однако в моем случае эта опция недоступна, так как я уже нахожусь в сеансе отладки, я полагаю.