Получить данные из базы данных Sqlite с помощью Xamarin.Forms - PullRequest
0 голосов
/ 24 июня 2018

Когда я создал приложение с Xamarin и sqlite. Я запускаю оператор, но он показывает мне это предложение на экране эмулятора: System.Linq.Enumerable + SelectEnumerableIterator`2 [AppUI.Entries, System.String]

Вот мой класс Entries:

public class Entries
{
    public Entries()
    {

    }

    public Entries(string word)
    {
        this.word = word;
    }
    public Entries(string word, string wordtype, string definition)
    {
        this.word = word;
        this.type = wordtype;
        this.defn = definition;
    }   
    public string word
    { get; set; }

    public string type
    { get; set; }

    public string sdex { get; set; }
    public int wlen { get; set; }

    public string defn
    { get; set; }

Вот класс DatabaseManager. Функция GetDef () - это утверждение, которое я рекомендовал.

public class DatabaseManager
{
    SQLiteConnection dbConnection;
    public DatabaseManager()
    {
        dbConnection = DependencyService.Get<ISQLite>().GetConnection();
    }


    public string GetDef(string w)
    {
        return dbConnection.Table<Entries>().Where(x => x.word == w).Select(x => x.defn).ToString();
    }


}

Я не знаю, почему это случилось? Пожалуйста помоги. большое спасибо

1 Ответ

0 голосов
/ 24 июня 2018

Эта часть запроса и Linq возвращает IEnumerable (т. Е. Ноль или более Entries объектов).

dbConnection.Table<Entries>().Where(x => x.word == w)

Эта часть проекции Linq предполагает, что она имеет только один Entries объект:

.Select(x => x.defn).ToString();

Поэтому используйте либо First, чтобы взять первую запись из перечисления (или вернуть null с FirstOrDefault, если записей не существует):

return dbConnection.Table<Entries>()
          .Where(x => x.word == w)
          .FirstOrDefault()?
          .defn;
...