繁体   English   中英

如何在 Firebase 实时数据库 Unity 中按字符串和数字中的值对数据库中的子项进行排序

[英]How do I order children in a database by value in strings and numbers in Firebase Realtime Database Unity

当值是数字和字符串时,我试图统一排序数据快照列表。 当我使用 dbReference.OrderByChild("score") 时,即使这些值同时存在于可以转换为数字的数字和字符串中,它也是先从字符串开始,然后是数字。

我希望将字符串转换为数字,然后以这种方式排序。 我使用字符串来存储数字,因为(据我所知)您不能在不使用字符串的情况下在 Firebase 中使用 BigInteger,因为 BigInteger 太大而无法放入常规的 firebase 数字中。

我希望它像排行榜一样从大到小排序。 从数据库中获取后,我尝试正确订购它,但我被卡住了,无法找到如何做到这一点。

我感谢任何帮助,谢谢。

Firebase 不会为您进行这种类型的数据转换。

如果你想按数字订购,你应该只存储数字。

如果您想要/需要将数字存储为字符串值,则需要以字典顺序与数字顺序匹配的格式存储它们。 执行此操作的常用方法是在字符串值前面加上零(或空格),直到它们的长度都相同。

因此对于:

1
23
456

如果您可以拥有的最大值是 999,您可以将这些存储为:

"001"
"023"
"456"

我刚刚想通了。 我使用的方法是以任意顺序从数据库中获取,然后将其存储在字典中。 在字典中存储时,我将数字转换为字符串并将其解析为 BigInteger,然后使用.Add() function 将其添加到字典中。 接下来,我通过执行以下操作按值对字典进行var sorted = from entry in users orderby entry.Value.score ascending select entry; 最后我循环浏览了相反的版本,它工作了! 即使存储在数据库中的值是字符串中的数字!

希望这可以帮助遇到我同样问题的人。 感谢所有试图提供帮助的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM