Итак, у меня есть запрос
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/