1

EF 5 を使用して、オブジェクトとそのフィルター処理された/順序付けられたコレクション プロパティを取得したいのですが、現在のコードでは例外がスローされます。

インクルード パス式は、型で定義されたナビゲーション プロパティを参照する必要があります。参照ナビゲーション プロパティにはドット パスを使用し、コレクション ナビゲーション プロパティには Select 演算子を使用します。

取得したいオブジェクトのクラスは次のとおりです。

public class EntryCollection
{
    [Key]
    public int Id { get; set; }
    public ICollection<Entry> Entries { get; set; }

    ...
}

の定義は次のEntryとおりです。

public class Entry
{
    [Key]
    public int Id { get; set; }
    public DateTime Added { get; set; }

    ... 
}

EntryCollection最新のエントリのみを含むを取得したかったので、試したコードは次のとおりです。

using (var db = new MyContext())
{
    return db.EntryCollections
             .Include(ec => ec.Entries.OrderByDescending(e => e.Added).Take(5))
             .SingleOrDefault(ec => ec.Foo == "bar');
}

何か案は?

4

1 に答える 1

2

インクルード内で OrderBy を使用することはできません。

以下はどうですか

using (var db = new MyContext())
{
    return db.EntryCollections
             .Where(ec => ec.Foo == "bar")
             .Select(ec=> new Something{Entries = ec.Entries.OrderByDescending(e => e.Added).Take(5) }, /*some other properties*/)
             .SingleOrDefault();
}

または2つの別々のクエリでそれを行います

于 2013-08-11T06:40:14.640 に答える