c# - 从查询 firebase 返回多个实例
问题描述
当前以 Xamarin 表单 (c#) 构建应用程序。该应用程序有一个 Firebase 后端。用户可以在应用程序内提交存储在 firebase 上的日志日志。
我正在处理的当前功能将根据用户 ID (uID) 从服务器检索所有日志实例,然后将它们显示到屏幕上。我目前的解决方案只返回最新的日志实例:
public async void getLastLogInstance(Guid uID)
{
//fetch last log user had information provided by user
var getUser = (await firebaseClient
.Child("UserLogs")
.OnceAsync<UserLogs>()).Where(a => a.Object.UserID == uID).LastOrDefault();
//if getUser equals null then the user has no log history
if (getUser == null)
{
logDate.Text = "No recent logs found";
}
//valid logs found, return data, successful login
else
{
var Content = getUser.Object as UserLogs;
logDate.Text = Content.logTime;
logData.Text = Content.logData;
happinessRating.Text = Content.sliderValue;
}
}
我需要访问已返回的各个属性,例如 Content.logTime、Content.logData
我找到了一种返回多个实例的方法,但是我无法访问上面提到的各个属性。下面的代码取自另一个具有不同用途的模块,但是该模块的用途与上面的相似
public async void DisplayContent(Guid idAsGuid)
{
try
{
/*getInstance will hold a list
* of result instances with the matching userID
* */
getResults = (await firebaseClient
.Child("phq9Results")
.OnceAsync<phq9Results>()).Where(a => a.Object.UserID == idAsGuid).Select(item => new phq9Results
{
UserID = item.Object.UserID,
overallResult = item.Object.overallResult,
submissionDate = item.Object.submissionDate
}).ToList();
//order list so most recently added result is positioned first
var orderedResults = getResults.OrderByDescending(x => x.submissionDate).ToList();
listOfResults.ItemsSource = orderedResults;
}
catch
{
return;
}
非常感谢您提前提供的帮助!!
解决方案
原来是一个相当简单的解决方案
通过执行此操作读取您尝试读取的数据的所有实例
//fetch all logs connected to the users ID (uID)
var getUser = (await firebaseClient
.Child("UserLogs")
.OnceAsync<UserLogs>()).Where(a => a.Object.UserID == uID).Select(item => new UserLogs
{
sliderValue = item.Object.sliderValue,
}).ToList();
然后遍历getUser列表,通过item.x访问属性
//loop for each item in object
foreach (var item in getUser)
{
total = total + item.sliderValue
}
推荐阅读
- ruby-on-rails - 工作结束后,工作人员中的内存未释放
- java - 如何使用 Java 将 XML 文档转换为目标 XML 模板结构(减少属性/元素)
- r - 按日期范围设置不平衡面板数据
- android - 向广播接收器发送隐式意图
- android - 解决。在 AlertDialog 中显示 MapView 时,对话框按钮消失
- android - 如何在颤动的谷歌地图中添加自定义大小?
- nlp - 如何识别作为光学字符识别 (OCR) 输出的文本中的实体?
- regex - Slash doesn't work in matching query using regexp in Elasticsearch
- swift - Xcode 项目在版本 10.1 上启动项目后抛出 NSUnknownKeyException
- bash - 如何计算文件中给定单词的出现次数?