Vb.net LINQ to SQL-何时需要选择,何时可以省略选择?
我一直在使用LINQ to SQL,我有几个简单的问题:Vb.net LINQ to SQL-何时需要选择,何时可以省略选择?,vb.net,linq,linq-to-sql,Vb.net,Linq,Linq To Sql,我一直在使用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
- 何时需要在查询结束时选择
- 我什么时候可以省略选择
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?)
谢谢
另外,我喜欢将LINQ查询写在一行上,除非它们非常大。使用select plus是一种很好的做法,如果您有一个查询要求更精确的结果,并且您只需要查询中的a或a和b,那么您可以使用select,它可以为您的查询节省内存分配,因为它知道您需要的变量的确切数量我会回来的 让我们有一个20列的表。获取一个包含select(2列)和一个不包含select的查询。两者的执行计划可能不同,在前一种情况下,从数据库服务器传输的数据要少得多。当且仅当您希望从集合中获取与
where
子句匹配的完整对象时,linq语句的select部分是完全可选的。如果希望集合中某个对象的单个值处于LINQ状态,则需要使用select子句
我个人总是把select r
子句放在末尾,这纯粹是出于习惯,但当我对option-strict有严格要求时,我遇到了其他人代码的一些问题,而他们在编写LINQ时没有。如果将来出于任何原因决定启用选项strict,则关闭select
子句会产生多个延迟绑定错误
因此,简而言之,您不需要使用select
子句,但如果您决定将选项严格设置为
,那么您只是在以后帮助自己。在我看来,它确实使您的代码更具可读性。VB.NET中的Select
是否总是可选的?我不知道这就是我问的原因。如果有些东西是可选的,那么我通常会省去它,只是为了让我的手指休息一下!“选择当前内容”是什么意思?如果不指定“选择”,则选择“全部”Dim q=tbl.aseable From r In tbl.Columns.Cast(属于DataColumn)中的c可计算()
返回一个匿名类型,其中包含该数据表中所有数据行和所有数据列的笛卡尔乘积。总是倾向于可读性,所以在不清楚查询返回的内容时使用Select
。好吧,那么查询将沿着Dim q=From r In tbl.a可从tbl.Columns.Cast(数据列的)中的c计算的路线进行。选择r.Column1,c.Column2
?好的,我理解,但是,如果我想要T-SQL中的所有列,例如,Select*
,我是否需要Select r
?我不确定vb语法,但这应该是可选的,linq expression visitor会将其作为身份投影删除。因此,如果我将Select放在末尾,而它不是必需的,它无论如何都会被删除?这是在编译期间还是在执行期间?在执行期间,当expression visitor将linq转换为sql时。但为什么这是最佳实践呢?与最佳实践相比,我通常更喜欢一致性和更少的代码!使用更少的代码并不总是意味着它能提供最好的性能。我只是想减少代码中的脂肪,使其更易于阅读、调试和维护。我并不担心需要额外的几毫秒来执行。其他人很好地理解这个问题。谢谢你的提示。我会考虑下一个项目: