Найти строку и вернуться к предыдущему значению c#

у нас есть файл ( +- 850 строк) формата vdf:

"users"
{
    "76561198971110872"
    {
        "AccountName"       "string1"
        "PersonaName"       "nick"
        "RememberPassword"      "1"
        "WantsOfflineMode"      "0"
        "SkipOfflineModeWarning"        "0"
        "AllowAutoLogin"        "1"
        "MostRecent"        "1"
        "Timestamp"     "1657315226"
    }
    "76561199256632399"
    {
        "AccountName"       "string2"
        "PersonaName"       "nick"
        "RememberPassword"      "0"
        "WantsOfflineMode"      "0"
        "SkipOfflineModeWarning"        "0"
        "AllowAutoLogin"        "1"
        "MostRecent"        "0"
        "Timestamp"     "1657313715"
    }
    "76561199264398742"
    {
        "AccountName"       "string3"
        "PersonaName"       "nick"
        "RememberPassword"      "1"
        "WantsOfflineMode"      "0"
        "SkipOfflineModeWarning"        "0"
        "AllowAutoLogin"        "1"
        "MostRecent"        "0"
        "Timestamp"     "1657102771"
    }
}

Мне нужно получить это:

введите сюда описание изображения

Но, эти цифры мне не известны, мне известно только "AccountName"

Вопрос - Как получить те цифры?

Буду рад ответить на встречные вопросы )


Ответы (1 шт):

Автор решения: aepot

Поставил NuGet пакет Gameloop.Vdf, скопировал ваши данные в файл, написал вот такой код:

using Gameloop.Vdf;
using Gameloop.Vdf.Linq;
static void Main(string[] args)
{
    VProperty users = VdfConvert.Deserialize(File.ReadAllText("users.vdf"));

    string name = "string2";
    VProperty user = users.Value
        .OfType<VProperty>()
        .FirstOrDefault(x => x.Value["AccountName"].Value<string>() == name);
    string key = user?.Key ?? "key not found";
    Console.WriteLine(key);

    Console.ReadKey();
}

Получил вот такой вывод в консоль

76561199256632399
→ Ссылка