Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剑道分页与Linq到SQL类,查询所有数据非常慢_C#_Sql Server_Linq_Linq To Sql_Kendo Grid - Fatal编程技术网

C# 剑道分页与Linq到SQL类,查询所有数据非常慢

C# 剑道分页与Linq到SQL类,查询所有数据非常慢,c#,sql-server,linq,linq-to-sql,kendo-grid,C#,Sql Server,Linq,Linq To Sql,Kendo Grid,我正在使用带有“linq到sql类”的剑道网格 C#Linq查询: public DataSourceResult GetCustomer(Kendo.Mvc.UI.DataSourceRequest request) { return new DataLayer.MainDataContext().Customer() .Where(x => x.IsActive) .ToList().ToDataSourc

我正在使用带有“linq到sql类”的剑道网格

C#Linq查询:

    public DataSourceResult GetCustomer(Kendo.Mvc.UI.DataSourceRequest request)
    {
        return new DataLayer.MainDataContext().Customer()
            .Where(x => x.IsActive)
            .ToList().ToDataSourceResult(request);
    }
假设客户活动数据为100万,则上述代码将获取100万数据,然后转换为ToDataSourceResult(来自“请求”)。事实上,结果是正确的。因为此查询显示来自“请求”(DataSourceRequest)的10个数据。但在这个过程中是错误的,因为在后台查询中先获取100万数据,然后转换为ToDataSourceResult。因此,我的应用程序显示数据的速度非常慢

然后我要更改我的代码:

    public DataSourceResult GetCustomer(Kendo.Mvc.UI.DataSourceRequest request)
    {
        return new DataLayer.MainDataContext().Customer()
            .Where(x => x.IsActive)
            .Skip((request.Page - 1) * request.PageSize)
            .ToList().ToDataSourceResult(request);
    }
结果显示数据非常快,因为查询需要10行数据。 但问题是: (1) 网格仅在右下角“10项中的1-10项”中显示结果,但有100万项(数据行)。
(2) 总分页仅“第1页”,不存在第2、3和下一页。

您可以在返回的DataSourceResult上设置总分页。

我知道这已经很晚了,但问题是您正在调用.ToList(),它对数据库执行查询,然后将结果转换为DataSourceResult。(我今天也有同样的问题。)

正确的方法是这样的:

public DataSourceResult GetCustomer(Kendo.Mvc.UI.DataSourceRequest request)
{
    return new DataLayer.MainDataContext().Customer()
        .Where(x => x.IsActive)
        .ToDataSourceResult(request);
}

扩展方法使用操作的请求参数中指定的排序、筛选器和页面执行查询。

无法执行。如果在返回的DataSourceResult上设置总计,网格筛选器将不起作用。我试过了。