如何优化linq查询速度?

son*_*ony 4 c# linq wpf

我有一个linq查询,它从customer表中获取所有记录到一个可观察的集合,如下所示:

customerList = new ObservableCollection<customer>(dbContext.customers);
dgRecords1.ItemsSource = customerList;
Run Code Online (Sandbox Code Playgroud)

该列表绑定到数据网格.customer表包含近百个字段.但是我只在数据网格上显示了几个字段.我的问题是

是否只使用linq查询从数据库中引入选定的字段可以提高客户屏幕的速度?

我需要过滤并有时删除此列表中的记录.

哪个是选择几个字段到可观察集合的最佳方法,有人可以提供一些示例linq查询吗?

Mar*_*ell 8

优化速度的提示:

  • 减少列减少了所需的带宽
  • 减少行数,但引入分页,减少更多带宽(通常)
  • 关闭变更跟踪和身份管理(例如ObjectTrackingEnabled在LINQ-to-SQL中)将减少后处理数据的开销
  • 使用预编译的查询有时可以帮助减少预处理开销

......但是坦率地说,当我们遇到这个问题时,我们通过写"小巧玲珑","老去"来解决它"一劳永逸":

var list = connection.Query<CustomerViewModel>(
    "select {some specific cols} from Customers").ToList();
Run Code Online (Sandbox Code Playgroud)

哪里CustomerViewModel是与LINQ等无关的简单POCO类型,只有所需的值,例如:

class CustomerViewModel {
   public int Id {get;set;}
   public string Name {get;set;}
   // ...
}
Run Code Online (Sandbox Code Playgroud)

这可以减少所有不必要的开销,是您只想显示数据的理想选择.此外,参数化和实现层非常优化(使用策略缓存,以获得最佳性能).