我一直在玩LINQ to SQL,我只有几个简单的问题:
以下是我的示例查询:
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 r
Select r.AColumnINeed, r.BColumnINeed (does this improve performance?)
感谢。
P.S。我喜欢在一行上写我的LINQ查询,除非它们真的很大。
答案 0 :(得分:2)
当且仅当您希望从与where
子句匹配的集合中获取完整对象时,linq语句的选择部分才是完全可选的。如果您希望集合中的对象中的单个值是LINQ,那么您需要使用select子句。
我个人总是把select r
条款放在最后,只是出于纯习惯,但是当我有选项严格的时候,我遇到了一些与其他人的代码有关的问题,当他们编写LINQ时却没有。如果您决定将来出于select
出于某种原因,请暂停option strict on
子句会产生多个后期绑定错误。
所以简而言之,你不需要select
条款,但是如果你决定转向option strict on
,你只会在以后帮助自己。它确实使我的代码在我看来更具可读性。
答案 1 :(得分:1)
让我们有一个包含20列的表格。使用select(2列)和一个WITHOUT进行查询。两者的执行计划可能不同,前一种情况下从数据库服务器传输的数据要少得多。
答案 2 :(得分:-1)
使用select plus是一个很好的做法,如果你有一个请求更精确结果的查询,并且你只需要a或a和b查询,你可以使用select,它会为你的查询保存内存分配,因为它知道你要返回的变量的确切数量。