Как использовать ".OrderBy" в Xamarin.Forms с SQLite-net-plc? - PullRequest
0 голосов
/ 08 июля 2019

Я хочу заказать записи календаря, которые я сохраняю в базе данных SQLite, чтобы они отображались в виде списка. Как я могу заказать их с SQLite-net-plc?

Я подумал, что могу просто написать: .OrderBy<CalendarEntryStartDate>, но это не сработало, и я попытался использовать команду SQLite, но у меня возникли некоторые проблемы с их использованием, поскольку я был сбит с толку m.db.

using System;
using SQLite;

namespace Stundenplan.Models
{
    public class CalendarEntry
    {
        [PrimaryKey, AutoIncrement]
        public int CalendarEntryId { get; set; }
        public string CalendarEntryTitle { get; set; }
        public string CalendarEntryDescription { get; set; }
        [Column("StatDate")]
        public DateTime CalendarEntryStartDate { get; set; }
        public DateTime CalendarEntryEndDate { get; set; }
        public TimeSpan CalendarEntrySpan { get; set; }
        public string CalendarEntryParticipants { get; set; }
        public string CalendarEntrytLocation { get; set; }
        public Boolean CalendarEntryPrivate { get; set; }
        public string CalendarEntryTags { get; set; }
        public string CalendarEntryColorTag { get; set; }
    }
}


using SQLite;
using System.Collections.Generic;
using Stundenplan.Models;
using System.Threading.Tasks;

namespace Stundenplan.Data
{
    public class CalendarEntryDatabase
    {
        readonly SQLiteAsyncConnection calendarentrydatabase;

        public CalendarEntryDatabase(string dbPath)
        {
            calendarentrydatabase = new SQLiteAsyncConnection(dbPath);
            calendarentrydatabase.CreateTableAsync<CalendarEntry>().Wait();
        }
        public Task<List<CalendarEntry>> GetCalendarEntrysAsync()
        {
            return calendarentrydatabase.Table<CalendarEntry>().ToListAsync();
        }
        public Task<CalendarEntry> GetCalendarEntryAsync(int id)
        {
            return calendarentrydatabase.Table<CalendarEntry>().Where(i => i.CalendarEntryId == id).FirstOrDefaultAsync();
        }
        public Task<int> SaveCalendarEntryAsync(CalendarEntry calendarentry)
        {
            if (calendarentry.CalendarEntryId == 0)
            {
                return calendarentrydatabase.InsertAsync(calendarentry);
            }
            else
            {
                return calendarentrydatabase.UpdateAsync(calendarentry);
            }
        }
        public Task<int> DeleteCalendarEntryAsync(CalendarEntry calendarentry)
        {
            return calendarentrydatabase.DeleteAsync(calendarentry);
        }
        public Task<List<CalendarEntry>> GetCalendarEntriesOrderedByStartDateAsync()
        {
            return calendarentrydatabase.Table<CalendarEntry>().OrderBy<>;
        }
    }
}

Я получил ошибки

CS0103: имя «CalendarEntryStartDate» не существует в текущем контексте;

и

CS0305: Использование группы методов "OrderBy" (универсальной) нужно 1-Typeargumetns.

Что я делаю не так?

1 Ответ

2 голосов
/ 08 июля 2019

OrderBy ожидает выражение lambda в качестве аргумента

OrderBy(x => x.CalendarEntryStartDate)
...