我有一个名为"用户"的集合,它有2个文档"A"和"B".现在我有2个用户,但以后我可能会有更多的用户,所以我必须列出文档.我需要找到一个名为Device Name的字段.我需要找出每个用户的设备名称.

我使用了以下代码,但它只能找到我列出的文档:

DocumentReference documentRef = db.Collection("User").Document("A");
DocumentReference documentRef2 = db.Collection("User").Document("B");
DocumentSnapshot documentSnapshot = await documentRef.GetSnapshotAsync();
DocumentSnapshot documentSnapshot2 = await documentRef2.GetSnapshotAsync();
if (documentSnapshot.Exists && documentSnapshot2.Exists)
{
    string deviceName = documentSnapshot.GetValue<string>("Device Name");
    string deviceName2 = documentSnapshot2.GetValue<string>("Device Name");
    MessageBox.Show($"Device Name: {deviceName}");
    MessageBox.Show($"Device Name 2: {deviceName2}");
}
else
{
    MessageBox.Show("Document does not exist.");
}

推荐答案

如果要获取User集合内所有用户的设备名称,则必须创建一个Query对象,然后调用GetSnapshotAsync(),如以下代码行所示:

Query userQuery = db.Collection("User");
QuerySnapshot userQuerySnapshot = await userQuery.GetSnapshotAsync();
foreach (DocumentSnapshot documentSnapshot in userQuerySnapshot.Documents)
{
    Console.WriteLine("Document data for {0} document:", documentSnapshot.Id);
    Dictionary<string, object> user = documentSnapshot.ToDictionary();
    foreach (KeyValuePair<string, object> pair in user)
    {
        if (pair.Key == "Device Name")
        {
            Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
        }

    }
    Console.WriteLine("");
}

这就是你应该继续下go 的方式,not人单独阅读每一份文件.当有两个文档AB时,事情很简单,但当有多个文档时,编写代码就会变得复杂.因此,您拥有的最佳 Select 是创建一个查询并遍历文档以获得所需的数据.

Csharp相关问答推荐

发布.NET框架项目将.NET核心元素注入到web. connect中

我应该将新的httpReportMessage()包装在using声明中吗?

Dapper是否可以自动扩展类成员

C#自定义字典与JSON(de—)serialize

如何注册接口类型,类型<>

用C#调用由缓冲区指针参数组成的C API

NET8 Maui&;iOS:AppCenter崩溃错误

如何在我的C#应用程序中设置带有reactjs前端的SignalR服务器?

正在寻找新的.NET8 Blazor Web应用程序.如何将.js添加到.razor页面?

泛型参数在.NET 8 AOT中没有匹配的批注

如何避免在.NET中将日志(log)写入相对路径

岛屿和框架中的自定义控件库.Navigate-AccessViolationException

C#如何获取字符串中引号之间的文本?

多个参数的最小API删除

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

与另一个对象位于同一位置的对象具有不同的变换位置

无法将.Net Framework 4.8.1升级到.Net 7

将两个JSON文件与覆盖值的主文件合并

如何在C#中用Serilog记录类路径、方法名和行编号

从列表中跳过和获取条目的优雅方式