Найти строку и вернуться к предыдущему значению 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
