Могу ли я использовать синтаксис Linq для запросов на соединение в sqlite- net -pcl? - PullRequest
0 голосов
/ 18 февраля 2020

Итак, у меня есть запрос

var query = "SELECT * " +
    " FROM OptionItem i" +
    " INNER JOIN Account_OptionList_OptionItem j" +
    " ON i.Id = j.Item_Id" +
    $" WHERE j.Account_Id={accountId}" +
    $" AND j.List_Id={listId}";

return _database.Query<OptionItem>(query);

Я чувствую себя безопаснее, используя синтаксис linq (поэтому компилятор сообщает мне, если я испортился). Но когда я пытаюсь это сделать:

return from i in _database.Table<OptionItem>()
        join j in _database.Table<Account_OptionList_OptionItem>()
        on i.Id equals j.Item_Id
        where j.Account_Id == accountId
        && j.List_Id == listId
        select i;

или вот так:

return _database.Table<Account_OptionList_OptionItem>()
    .Where(x => x.Account_Id == accountId && x.List_Id == listId)
    .Join(_database.Table<OptionItem>().Where(x => x.Group_Id == listId),
        join => join.Item_Id,
        item => item.Id,
        (join, inner) => inner);

Это займет намного больше времени (я думаю, что таблица вытягивается в память, а затем просто использует System.Linq). Есть ли способ использовать синтаксис Linq без снижения производительности? (есть библиотека, которая поддерживает это?)

РЕДАКТИРОВАТЬ: я использую пакет nuget: https://www.nuget.org/packages/sqlite-net-pcl/

1 Ответ

0 голосов
/ 18 февраля 2020

Это зависит от вашего ORM и базы данных, однако в большинстве случаев синтаксис одинаков. Но не ясно, что вы хотите выбрать и какая у вас модель. Если бы вы могли предоставить вашу модель, я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...