我有一个包含文本框,搜索按钮和网格视图的ASP.net页面。
最初页面将加载绑定到网格的所有记录。在这里,还有另一个用户选项,他可以通过在文本框中输入id值来过滤网格记录。
因为,在页面加载时,我将网格与所有记录绑定。当用户在文本框中输入过滤条件时,我使用linq查询来过滤它。
我的网格有大约28,000条记录。
在这里,我的问题是要遵循哪种方法。一种方法是将id传递给数据库并获取结果,或者只是查询已经可用的数据集。
我正在使用LINQ方法,这似乎需要更多时间。还是只是我的错觉?
两种方法之间有什么不同吗?如果是这样有效?
请在此澄清我。我使用的LINQ查询是:
Var query = from myrow in dtItems.AsEnumerable()
where myrow.Field<string>("ID") ==txtID.Text
select myrow;
答案 0 :(得分:0)
Var query = from myrow in dtItems.AsEnumerable()
where myrow.Field<string>("ID") ==txtID.Text
select myrow;
使用AsEnumerable表示已加载所有记录,并且过滤器已应用于内存集合。
如果您只是省略AsEnumerable
,您应该获得一个Queryable,并在SQL中应用where,这样您只需加载匹配的行。
但是,如果您确定已经有内存中的项目,那么查询它们比调用数据库更快...您需要分析代码并查看哪种方法效果最好。