LINQ 计数 .. 最佳方法

spa*_*eys 3 linq vb.net performance

我的公司刚刚开始使用 LINQ,我仍然对 LINQ 命令和 SQL 的抽象性(如果那是一个词)有一点麻烦,我的问题是

  Dim query = (From o In data.Addresses _
                    Select o.Name).Count
Run Code Online (Sandbox Code Playgroud)

在我看来,SQL 正在返回所有行,并且对 IQueryable 结果中的行数进行计数,所以我会更好

    Dim lstring = Aggregate o In data.Addresses _
    Into Count()
Run Code Online (Sandbox Code Playgroud)

还是我想多了 LINQ 的工作方式?在家里使用 VB Express,所以我看不到发送到数据库的实际 SQL(我认为),因为我无权访问 SQL 分析器

Mar*_*ger 6

如前所述,这些在功能上是等效的,一个只是使用查询语法。

正如我在评论中提到的,如果您将以下内容评估为LINQPad 中的 VB 语句:

Dim lstring = Aggregate o In Test _
    Into Count()
Run Code Online (Sandbox Code Playgroud)

您可以在生成的 SQL 输出窗口中看到:

SELECT COUNT(*) AS [value]
FROM [Test] AS [t0]
Run Code Online (Sandbox Code Playgroud)

这与评估的以下 VB LINQ 表达式相同:

(From o In Test_
    Select o.Symbol).Count
Run Code Online (Sandbox Code Playgroud)

你得到完全相同的结果。