これが私の状況です:
am:n-アーティストとイベントの関係があります。私がやろうとしているのは、特定のアーティストを含むイベントのみを含むIQueryableを取得することです。データアクセス層にリポジトリを使用しています。明らかに、次のアプローチは機能しません。
_db.EventSet.Include("Location").Where(e => (e.Artists.Contains(artist)) && (e.StartDate > System.DateTime.Now)).OrderBy(e => e.StartDate);
私はEntityFrameworkを初めて使用するので、その理由はよくわかりませんが、推測できます。ですから、誰かがこれを非常に簡単な方法で説明できた場合、私も感謝します。とにかく、私が思いついた私の解決策は次のようになります:
IQueryable<Event> events = _db.EventSet.Include("Location").Where(e => (e.EndDate > System.DateTime.Now));
List<Event> eventsList = new List<Event>();
foreach (var ev in events)
{
eventsList.Add(ev);
}
return (IQueryable<Event>)eventsList.AsQueryable().Where(e => e.Artists.Contains(artist)).OrderBy(e=>e.StartDate);
すべてのイベントが取得および処理されるため、これはまったく良い解決策ではありません。これは大きなオーバーヘッドです。私の問題のより良い解決策を教えてくれる人はいますか?また、ObjectQueryとは何か、およびObjectQueryをIQueryableにキャストする方法(可能であれば)を実際には理解していなかったという事実も認識しています。
私はどんな提案にも感謝しています。