Загрузка данных


public class TodoList
{
    public static List<Task> GetAllTasks(SqliteConnection connection)
    {
        var rows = connection.Query<dynamic>("SELECT tasks.id as TaskId, tasks.finished as TaskFinished, tags.id as TagId, tasks.title as TaskTitle, tags.title as TagTitle FROM tasks INNER JOIN task_tags ON task_tags.task_id = tasks.id INNER JOIN tags ON tags.id = task_tags.tag_id");
        var tasks = rows.GroupBy((it) => it.TaskId).Select(it =>
        {
            var taskId = Convert.ToInt32(it.Key);
            var taskTitle = it.First().TaskTitle;
            var taskFinished = it.First().TaskFinished;
            var tags = it.Select(it => new Tag
            {
                Id = Convert.ToInt32(it.TagId),
                Title = it.TagTitle,
            });
            return new Task
            {
                Id = taskId,
                Title = taskTitle,
                Finished = Convert.ToBoolean(taskFinished),
                Tags = tags.ToList(),
            };
        });

        return tasks.ToList();
    }
}