我正在使用KendoUI网格并使用其ToDataSourceResult来过滤我的数据(如文档所示),但我担心性能影响.
根据我的理解,下面建议的代码从数据库获取所有记录到内存和performm ToDataSourceResult扩展方法来过滤内存中的记录(LINQ流畅的api概念).如果我有很多记录,这会对性能产生很大影响吗?
我认为对数据库进行查询,前面的"where"子句会有更好的性能......请指教.
这是文档中建议的内容
var countries = _database.Countries.GetAll();
return Json(countries.ToDataSourceResult(request, record => new
{
record.Id,
record.Name,
record.Currency,
record.TimeZone
}));
Run Code Online (Sandbox Code Playgroud)
这是不使用ToDataSource过滤器的其他选项
var selectedCountries = _database.Countries.GetCountryStartWith("m")
Run Code Online (Sandbox Code Playgroud)
这取决于您的GetAll方法返回的内容.如果它IQueryable从启用LINQ的提供程序(实体框架,Linq到SQL或其他任何内容)返回,则所有操作都将在数据库级别(而不是在内存中)执行.如果它返回所有记录 - 即使在使用ToDataSourceResult之前你也遇到了问题.