Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net LINQ to SQL-何时需要选择,何时可以省略选择?_Vb.net_Linq_Linq To Sql - Fatal编程技术网

Vb.net 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

我一直在使用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?)
谢谢


另外,我喜欢将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时。但为什么这是最佳实践呢?与最佳实践相比,我通常更喜欢一致性和更少的代码!使用更少的代码并不总是意味着它能提供最好的性能。我只是想减少代码中的脂肪,使其更易于阅读、调试和维护。我并不担心需要额外的几毫秒来执行。其他人很好地理解这个问题。谢谢你的提示。我会考虑下一个项目: