【问题标题】:How to query from Firebase in c#?如何在 C# 中从 Firebase 查询?
【发布时间】:2020-10-26 21:26:59
【问题描述】:

我在 c# 中使用 firebase.database 从 Firebase 进行查询,我想在 linq 中进行 Where 但我没有找到任何有用的扩展方法。 我有 CallHistory 表有许多属性,如 Rate、Id、Status 和 在 Rate 属性中创建索引,这是 callhistory 的 json

 "CallHistory" : {
    "0798af9c-180c-4d67-a58d-a47043f7e36f" : {
      "CreatedDate" : "0001-01-01T00:00:00Z",
      "Id" : "0798af9c-180c-4d67-a58d-a47043f7e36f",
      "IsActive" : false,
      "IsDeleted" : false,
      "Latitude" : 1.5,
      "ModifiedDate" : "0001-01-01T00:00:00Z",
      "Rate" : 5,
      "RecipientId" : "00000000-0000-0000-0000-000000000000",
      "Status" : 2,
      "StatusDateTime" : "0001-01-01T00:00:00Z",
      "longitude" : 1.2
    },
    "151c7072-0b17-44aa-a834-99c265ef897f" : {
      "CreatedDate" : "0001-01-01T00:00:00Z",
      "Id" : "151c7072-0b17-44aa-a834-99c265ef897f",
      "IsActive" : false,
      "IsDeleted" : false,
      "Latitude" : 1.5,
      "ModifiedDate" : "0001-01-01T00:00:00Z",
      "Rate" : 4,
      "RecipientId" : "00000000-0000-0000-0000-000000000000",
      "Status" : 1,
      "StatusDateTime" : "0001-01-01T00:00:00Z",
      "longitude" : 1.2
     }
    } 

并写下这段代码

           using Firebase.Database;
           using Firebase.Database.Query;

            var firebase = new FirebaseClient("https://sound-project-42ead.firebaseio.com/");
            var calls = await firebase
              .Child("CallHistory").OrderBy("Rate").EqualTo("4")
              .OnceAsync<CallHistory>();

但它不返回任何数据。 通过搜索我发现有一个名为 OrderByChild() 的函数,但我没有找到这个方法了 在 firebase.database.query 中。 我可以安装任何其他 dll 来查找 orderbychild()。

【问题讨论】:

  • 请编辑您的问题以在CallHistory 包含 JSON 的 sn-p(作为文本,请不要截图)。您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
  • 完成,感谢您的宝贵意见

标签: c# firebase linq firebase-realtime-database .net-core


【解决方案1】:

Firebase 实时数据库查询会比较存储数据的实际类型和您指定的值。并且字符串"4"和数值4不一样。

所以你需要传递一个数字:

var firebase = new FirebaseClient("https://sound-project-42ead.firebaseio.com/");
var calls = await firebase
  .Child("CallHistory").OrderBy("Rate").EqualTo(4)
  ...

【讨论】:

  • 我还有一个问题??如果我想添加多个查询?我该怎么做?
  • 您的意思是过滤多个属性吗? Firebase 数据库查询只能对单个属性进行排序/过滤。在许多情况下,可以将要过滤的值组合成单个(合成)属性。例如,您可以拥有 "Status_Rate": "1_4" 属性。有关此方法和其他方法的更长示例,请在此处查看我的答案:stackoverflow.com/questions/26700924/…
猜你喜欢
  • 1970-01-01
  • 2018-12-06
  • 2020-08-23
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多