var data= (from a in context.Table1
where a.Id== id
select a);
return data.ToList();
我在wpf项目中有上面的linq查询。上面的查询从SQLite数据库中获取大约0.2-0.3百万行。结果提取速度很快但是在执行data.ToList()时,由于no而需要很多时间。行,因此我的UI等待15-20秒才能看到结果。我该如何解决这个问题。
此外,如果上面的表包含外键,那么在访问子元素时,它会抛出ObjectDisposeedException。我猜它是由于延迟加载,所以我试图明确设置子元素。它工作但后来我的过程变得更慢
答案 0 :(得分:2)
当然LINQ
命令“立刻执行”,下面只是代表查询。
var data= (from a in context.Table1
where a.Id== id
select a);
只有在return data.ToList();
迭代查询时才执行查询,这正是ToList
方法所做的。
我建议您使用寻呼机中的Skip
和Take
运算符来缩小从数据库中查询的结果范围。这样做,您只需要10或20个元素或任何您需要的元素,从而获得更顺畅的体验。
分页也一定会优化您的检索性能..
答案 1 :(得分:0)
在使用" .ToList()"之前表示您仍处于模式" IQueryable"中的代码,以及使用" .ToList()"表示您访问物理数据库。 您可以采用某种方式获取一些数据"。采取(x)"和" .Page(y)"在LINQ上。你可以试试这个方法:
subSet().size()