访问从 SQLite 数据库返回的字符串任务的字段会出错
Posted
技术标签:
【中文标题】访问从 SQLite 数据库返回的字符串任务的字段会出错【英文标题】:Accessing fields of a string task returned from SQLite Database is giving errors 【发布时间】:2021-05-30 23:19:26 【问题描述】:在我的 Xamarin 应用程序中,我使用 SQLite 设置了一个本地数据库。我在设置时遵循了 microsoft 待办事项列表示例 (https://docs.microsoft.com/en-gb/xamarin/xamarin-forms/data-cloud/data/databases),但是我遇到了一个问题。
我有一个名为“Animal”的模型,它保存在我的数据库中,我正在尝试查询以下字段:
public int ID get; set;
public string Name get; set;
public string Species get; set;
public string Markings get; set;
public string Diet get; set;
在我的数据库查询文件中,我正在尝试执行一个查询,该查询将根据用户给出的动物名称获取动物,然后从中返回其标记/饮食/等... 这是我目前所拥有的,但它出错了,我真的不确定如何修复它:
public async Task<string> getanimaldiet(string name)
Animal a = Database.Table<Animal>().Where(x => x.Name == name).FirstOrDefaultAsync();
return a.Diet;
错误: 当前上下文中不存在名称“饮食”并且无法将类型“System.Threading.Tasks.Task”隐式转换为“animalService.Animal”
非常感谢任何帮助。
【问题讨论】:
你有什么错误? 当前上下文中不存在名称 'diet' 并且无法将类型 'System.Threading.Tasks.Task' 隐式转换为 'animalService.Animal' 更新帖子以包含此内容 【参考方案1】:由于您有异步 api,因此您需要在代码中添加等待:
Animal a = await Database.Table<Animal>().Where(x => x.Name == name)
.FirstOrDefaultAsync();
return a.Diet;
你可以让它同步:
public string getanimaldiet(string name)
Animal a = Database.Table<Animal>().Where(x => x.Name == name)
.FirstOrDefault();
return a.Diet;
)
【讨论】:
谢谢!然后我将如何将返回的内容转换为字符串而不是类型 System.threading.task.task? 使用FirstOrDefault
而不是FirstOrDefaultAsync
当我在另一个文件@Jason 中调用函数时,我会使用它吗?以上是关于访问从 SQLite 数据库返回的字符串任务的字段会出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 从 sqlite 3 数据库中检索存储在整数字段中的字符串数据
从 2 个不同片段的 sqlite 中的 2 个表中获取信息