#c# #mysql #list #unity3d
Вопрос:
Поэтому я запрашиваю данные из базы данных MySQL и сохраняю их в файле JSON. У меня есть список строк с именем «x», которые берут строку из базы данных, но сами значения являются плавающими. Я пытаюсь преобразовать список строк в список поплавков, потому что хочу использовать эти значения в качестве векторных точек.
Моя строка списка с именем «x» вызывается из другого файла C#, в котором я запрашиваю базу данных из PHP. Как преобразовать мой список строк в список поплавков?
for (int i = 0; i < DataServerManager.instance.x.Count; i )
{
Debug.Log(DataServerManager.instance.x);
}
Что делает этот код, так это просматривает мой список строк и отлаживает значения. Значения-это числа. Вот почему я пытаюсь преобразовать список строк в список поплавков. Потому что я хочу использовать эти значения в качестве чисел.
Причина, по которой они находятся в списке строк в первую очередь, заключается в формате JSON.
Как преобразовать список строк в список поплавков?
Комментарии:
1. Как бы вы преобразовали одну строку в поплавок? Сделайте это для всех строк в вашем списке строк.
2.
List<Single> floats = DataServerManager.instance.x.Select( str => ( ok: Single.TryParse( str, out Single f ), f ) ).Where( t => t.ok ).Select( t => t.f ).ToList()
3. @Dai большое тебе спасибо!
4. @Dai, Эй, как мне преобразовать список поплавков в поплавок? Мне нужно использовать все эти поплавки в моей переменной Vector3 vectorpoint. Но когда я использую поплавки, он говорит, что не может преобразовать <float> в float. Как преобразовать список поплавков в поплавки, которые я могу использовать в своем векторе?
5. я все понял! спасибо вам всем!
Ответ №1:
Если все ваши строки надежно плавают и их не удастся разобрать, вы можете сделать:
var floats = DataServerManager.instance.x.Select(float.Parse).ToList()
Если бы они могли не выполнить синтаксический анализ, я думаю, что использовал бы цикл
var floats = new List<float>();
foreach(var s in DataServerManager.instance.x)
if(float.TryParse(s, out var f)) floats.Add(f);
Комментарии:
1. спасибо, я смог разобраться с помощью @Dai. Они сказали мне использовать » Список<Один> поплавки = DataServerManager.экземпляр.x.Выберите( str =<Один>> ( ок: Один. Попробуйте проанализировать( str, из одного f ), f )). Где( t => t.хорошо ). Выберите( t => t.f ).ToList()’
2. Это не то, как работает переполнение стека. Дай сделал это в качестве комментария, но его следовало опубликовать в качестве ответа. Текст-заполнитель для поля для комментариев даже гласит: «избегайте ответов на вопросы в комментариях». Я опубликовал (в качестве ответа) две альтернативы предложению Dai — одну, которая проще/быстрее, если вы уверены, что все ваши строки будут преобразованы в float без ошибок, и ту, которая проверяет, но не использует LINQ. Вы не должны вставлять в свою программу код, который вы не понимаете. Причина, по которой мы должны публиковать ответы вместо ответов в комментариях, заключается в том, что комментарии эфемерны, а также..
3. ..не может быть помечен как ответ, поэтому ваш вопрос остается «без ответа» на панели мониторинга, а остальная часть сообщества и будущие посетители не имеют ни малейшего представления о том, что сработало для вас. Так что речь идет не только о вас и вашей проблеме, но и обо всех людях, которые придут сюда (именно на этот вопрос) в будущем. Что вам следует сделать сейчас, так это либо попросить Dai опубликовать комментарий в качестве ответа, опубликовать свой собственный ответ, либо (как указано в вашей ошибке компилятора о том, что вы, возможно, используете одно из моих предложений) отметьте этот ответ как ответ, щелкнув серую галочку, чтобы сделать его зеленым. Это отмечает ответ на вопрос
4. это помогает будущим посетителям понять, что сработало для вас, а также делает панель мониторинга более эффективной, чтобы людям, ищущим вопросы без ответов, было легче. В будущем, если кто-то ответит на вопрос в комментарии, не используйте его, а затем оставьте свой вопрос гнить; попросите их опубликовать ответ или опубликуйте свой собственный —