現時点では Entity Framework でテストできませんが、通常の LINQ-to-SQL では次のステートメントを使用できます。
var rpage1 = entities.GetSearchData(null,"en",null,true).Skip(0).Take(10)
var rpage2 = entities.GetSearchData(null,"en",null,true).Skip(10).Take(10)
var rlist = rpage1.ToList();
LINQ は次のような句を生成します
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
私の場合、結果のクエリは次のとおりです (GetConstantsValues はストアド プロシージャです)。
SELECT [t1].[value] AS [Value]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[value]) AS [ROW_NUMBER], [t0].[value]
FROM [dbo].[GetConstantsValues](@p0) AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p1 + 1 AND @p1 + @p2
ORDER BY [t1].[ROW_NUMBER]
したがって、関連する結果のみがプログラムにロードされます。
EFはそれと大差ないはずだと思います。間違っているかもしれません。