次の形式の Linq-to-Entities コンパイル済みクエリを実装する方法を見つけようとしています。
Func<MyEntities, List<int>, IQueryable<MyClass>> query = System.Data.Objects.CompiledQuery.Compile(
(MyEntities entities, List<int> IDs) => (
(from au in entities.Mine where IDs.Any(x => x == au.ID) select au)
));
CompiledQuery.Compile に渡すことができるのはスカラー パラメーターのみであるため、上記は失敗します。コンマで区切られた整数のリストを文字列として渡し、それを次の行に沿って L2E クエリで使用する賢い方法を見つけようとしています。
Func<MyEntities, string, IQueryable<MyClass>> query = System.Data.Objects.CompiledQuery.Compile(
(MyEntities entities, string IDs) => (
(from au in entities.Mine where IDs.Split(',').Any(x => Convert.ToInt32(x) == au.ID) select au)
));
ただし、サポートされていない Split 関数のため、これは機能しません。
これをどのように実装できるかについての賢いアイデアはありますか?