-1

我一直在玩 LINQ to SQL,我只有几个简单的问题:

  • 我什么时候需要在查询结束时选择 Select?
  • 什么时候可以省略 Select?

这是我的示例查询:

Dim pageRoute = From r In db.PageRoutes Where r.PageId = pageId Order By r.Id Descending

Dim pageRoute = From r In db.PageRoutes Where r.PageId = pageId Order By r.Id Descending

Dim dp = From r In db.DownloadPageOnlineOnlies Where r.PageId = pageId Order By r.Weight Descending, r.Id Ascending

Dim download = (From r In db.Downloads Where r.Id = id).First
  • 他们中的任何一个在技术上是错误的吗?
  • 可以用 Select 或其他东西改进它们吗?

简而言之,我不明白什么时候需要:

Select r
Select r.AColumnINeed, r.BColumnINeed (does this improve performance?)

谢谢。

PS 我喜欢在一行上写我的 LINQ 查询,除非它们真的很大。

4

3 回答 3

2

where当且仅当您想从与您的子句匹配的集合中获取完整对象时,linq 语句的 select 部分是完全可选的。如果您想要来自正在 LINQ 的集合中的对象的单个值,那么您需要使用 select 子句。

我个人总是select r出于纯粹的习惯将子句放在末尾,但是当我有严格的选项时,我遇到了其他人的代码的一些问题,而他们在编写 LINQ 时却没有。select如果您出于任何原因决定option strict on在未来转入,那么关闭该子句会产生多个后期绑定错误。

所以简而言之,您不需要该select子句,但如果您决定转身,您只会在以后帮助自己option strict on。在我看来,它确实使您的代码更具可读性。

于 2012-05-30T18:29:57.683 回答
1

让我们有一个有 20 列的表。查询 WITH select(2 列)和一个 WITHOUT。两者的执行计划可能不同,在前一种情况下从数据库服务器传输的数据要少得多。

于 2012-05-30T16:57:41.047 回答
-1

如果您有一个请求更精确结果的查询,并且像您只需要查询中的 a 或 a 和 b 一样,使用 select plus 是一个好习惯,您可以使用 select 并为您的查询节省内存分配,因为它知道确切的数字您将要返回的变量。

于 2012-05-30T16:56:01.593 回答