0

我有一个包含文本框、搜索按钮和网格视图的 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;
4

1 回答 1

0
Var query = from myrow in dtItems.AsEnumerable()
                        where myrow.Field<string>("ID") ==txtID.Text
                        select myrow;

使用AsEnumerable意味着加载所有记录并将过滤器应用于内存中的集合。

如果你只是省略了AsEnumerable你应该得到一个 Queryable 并且在 SQL 中应用了 where 你只加载匹配的行。

但是,如果您确定您已经在内存中拥有这些项目,那么查询它们应该比调用数据库更快......您需要分析代码并查看哪个最有效。

于 2013-09-12T11:50:20.040 回答