1

Sterling Databaseを使用していて、クラスとインデックスを次のように定義しました

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)の順序ではなく、作成された順序で返されます。

これは予想されることですか、それとも私は何か間違ったことをしていますか。

そして、tにorderby句を挿入する方法はありますか。

4

1 に答える 1

1

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();
}
于 2011-08-17T09:29:46.733 に答える