同様の質問が何度も寄せられていることは知っていますが、通常、LINQ to Entities にサポートされていない機能をサポートするように求めているか、提供されているソリューションが探しているものではありません。
どこでも使用できるように、拡張メソッドにカプセル化したい SIMPLE クエリがあります。
public static Episode Latest(this ICollection<Episode> EpisodesSet)
{
return EpisodesSet.OrderByDescending(e => e.AiredDate).FirstOrDefault();
}
これにより、次のエラーで NotSupportedException が生成されます。
LINQ to Entities はメソッド '[namespace/type/method here]' メソッドを認識せず、このメソッドはストア式に変換できません
したがって、「単純なクエリ」とはOrderByDescending(expression).FirstOrDefault()
、LINQ to Entities でサポート/変換可能であることを意味します。また、式を返す関数を作成して次のようなことを行うことができることはわかっていますepisode = Episodes.Where(Latest())
が、これはあまり「発見可能」ではないようで、探しているソリューションではありません。
次のような拡張メソッドを使用しようとしたときに、LINQ to Entities が NotSupportedException をスローしないように、拡張メソッドを書き直す方法があるかどうかを知りたいです。
var query = from show in context.Shows
select new {show.Title, show.Epsiodes.Latest()};