#c# #sqlite #xamarin
#c# #sqlite #xamarin
Вопрос:
В моем приложении 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;
}
Ошибки:
Имя «диета» не существует в текущем контексте и не может неявно преобразовать тип «Система».Многопоточность.Задачи.Задача<animalService .Animal>’ to ‘animalService .Животное ‘
Любая помощь приветствуется.
Комментарии:
1. Какая у вас ошибка?
2. Имя ‘diet’ не существует в текущем контексте и не может неявно преобразовать тип ‘System. Многопоточность. Задачи. Задача<animalService . Животное>’ to’animalService. Животное» обновило сообщение, чтобы включить это
Ответ №1:
Поскольку у вас есть асинхронный api, вам необходимо добавить await в свой код:
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;
)
Комментарии:
1. Спасибо! Как бы мне тогда преобразовать то, что возвращается, в строку, а не вводить System.threading.task.task?
2. используйте
FirstOrDefault
вместоFirstOrDefaultAsync
3. Буду ли я использовать это при вызове функции в другом файле @Jason?