という名前のテーブルがPoll
あり、配列に属する ID を持つすべてのポーリングを一覧表示する LINQ 拡張機能を作成したいとします。例:
void Main()
{
long[] ids = new long[]{ 1,2,3,4,5,6,7,8,9 };
ListFail<Poll>(Poll, p => p.ID, ids); //Failed!
ListOK<Poll>(Poll, p => p.ID, ids); //OK!
}
public void ListFail<T>(Table<T> obj, Func<T, long> idProperty, long[] ids) where T : class
{
obj.Where(p => ids.Contains(idProperty(p))).ToList().Dump();
}
public void ListOK<T>(Table<T> obj, Func<T, long> idProperty, long[] ids) where T : class
{
obj.ToList().Where(p => ids.Contains(idProperty(p))).ToList().Dump();
}
エラーが発生する理由がわかりませんListFail
Method 'System.Object DynamicInvoke(System.Object[])' has no supported translation to SQL.
ToList()
前に追加したときはWhere
うまくいきましたが、もちろんテーブルListOK
全体を取得したくありません。Poll
何か案が?