Индекс даты и времени базы данных WP7 - PullRequest
1 голос
/ 17 августа 2011

Я использую базу данных Sterling и определил класс и индекс следующим образом

public class SingleEventDB :TimetableEventDB
{
    public DateTime EventDateTime { get; set; }
}

CreateTableDefinition<SingleEventDB, string>(k => k.UniqueId)
    .WithIndex<SingleEventDB,DateTime,string>("BYDATETIME",i=>i.EventDateTime)

Я обращаюсь к этому следующим образом

public List<SingleEvent> GetAllSingleEvents(DateTime StartDate)
{
    var allSingleEvents = new List<SingleEvent>();

    var result =
        from eveItemDB in App.MyDatabase.Query<SingleEventDB, DateTime, string>("BYDATETIME")
        where (eveItemDB.Index >= StartDate)
        select new SingleEvent
        {
            UniqueId = eveItemDB.LazyValue.Value.UniqueId,
            NextDateTime = eveItemDB.Index,
            Details = eveItemDB.LazyValue.Value.Details,
            Location = eveItemDB.LazyValue.Value.Location
        };

    foreach (SingleEvent eveItem in result)
    {
        allSingleEvents.Add(eveItem);

    }

    return allSingleEvents;
}

Однако, хотя предложение where правильно отфильтровываетсяобъекты, которые являются более ранними, чем дата ввода, возвращаются в том порядке, в котором они были созданы, а не в порядке индекса (DateTime).

Ожидается ли это, или я что-то не так делаю.

И есть ли способ вставить предложение orderby в т.

1 Ответ

1 голос
/ 17 августа 2011

Кажется, вы пропустили метод расширения Enumerable.ToList !И да, вы можете просто добавить orderby eveItemDB.Index в ваш код, например:

public List<SingleEvent> GetAllSingleEvents(DateTime StartDate)
{
    var result =
        from eveItemDB in App.MyDatabase.Query<SingleEventDB, DateTime, string>("BYDATETIME")
        where (eveItemDB.Index >= StartDate)
        orderby eveItemDB.Index
        select new SingleEvent
        {
            UniqueId = eveItemDB.LazyValue.Value.UniqueId,
            NextDateTime = eveItemDB.Index,
            Details = eveItemDB.LazyValue.Value.Details,
            Location = eveItemDB.LazyValue.Value.Location
        };

    return result.ToList();
}
...