質問: query.OrderBy(Expression.Lambda>(mexpr, e)); return sortedQuery.Skip(low).Take(high - low + 1).AsEnumerable(); } ``` 最後の手段として、 `Skip`および`Take`前にいつでも`AsEnumerable()`実行できますが、SQLで選択できる場合でも、データベースから**すべて**のオブジェクトを取得する必要があります。 おそらく、最良の代替策は、リフレクションを使用してオブジェクトプロパティに`DataMemberAttribute`があることを確認し、次に`query.OrderBy().Skip().Take().AsEnumerable()`または`query.AsEnumerable().OrderBy().Skip().Take()`を実行することを選択することです`query.AsEnumerable().OrderBy().Skip().Take()` ?
回答: linq-to-entitiesクエリはSQLに変換された式ツリーだけなので、できません。ツリーをSQLに変換するには、エンティティマッピングが使用されます。 `Title`がマッピングにないため、例外がスローされます。 `Skip`および`Take`前に`AsEnumerable`呼び出すと、データテーブル全体のコンテンツが常にアプリケーションに転送されるため、設計が非常に悪いように聞こえます。これは非常に遅くなり、ビッグデータテーブルの場合も役に立たなくなります。 これがローカライズの問題である場合、これを有効にするには、データベースにローカライズされた文字列が含まれている必要があります。同時に、いくつかのレコードだけでこれを実行する必要がある場合は、それらすべてをロードできます。