0

私は実体を持っています:

Entry
{
    public virtual ICollection<Content> Contents { get; set; }
}

Entryフィルタリングされたを含むを取得する必要がありますContents

var entryWithFilteredContents = dbContext.Entry.Single(). ???
    /*Load(entry=>entry.Contents) Where(content=> content.Value > 10)*/

今私が書くとき、私entryWithFilteredContents.Contentsは10より大きい値を持つコンテンツだけを受け取ることを期待しています。私はそれを得ることができることを知っていますが、var entry = db.Context.Entry.Single()それvar contents = entry.Contents.Where(content=> content.Value > 10)は私のニーズを満たしていません。

4

1 に答える 1

1

これは、EFが現在サポートしているものではありません。

通常の回避策は、最初に次のようにプロジェクションを選択することです。

var query = from e in dbContext.Entry
            select new { Entry = e, Related = e.Contents.Where(c => c.Value > 10) };
return query.Where(p => p.Related.Count > 0).Select(p => p.Entry);

もちろん、任意のプロジェクションを直接返すこともできます(そして、データベースのラウンドトリップを節約できる可能性があります)が、結果を現在のメソッドからエスケープするには、匿名でないタイプが必要になります。

于 2012-05-23T01:02:12.297 に答える