我正在使用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
}));
这是不使用ToDataSource过滤器的其他选项
var selectedCountries = _database.Countries.GetCountryStartWith("m")
答案 0 :(得分:6)
这取决于您的GetAll
方法返回的内容。如果它从LINQ-enabled provider(实体框架,Linq到SQL或其他任何内容)返回IQueryable
,则所有操作都将在数据库级别(而不是在内存中)执行。如果它返回所有记录 - 即使在使用ToDataSourceResult之前你也遇到了问题。