.net 使用linq编译的查询

.net 使用linq编译的查询,.net,sql,vb.net,linq,.net,Sql,Vb.net,Linq,嗨,我刚刚发现我的web应用程序很慢,可能是因为linq 我对那些已编译的查询有点不知所措,你能帮我编译一个查询并使它仍然可以用于查询吗?(这可以理解吗?:p) 例如,此查询(在vb.net中): 然后我想确保仍然能够做这样的事情: Dim level0 = (From l In query Where l.level = 0 Order By l.index Ascending Select l) 谢谢你的帮助 编辑: 我试着这么做: Dim myquery = CompiledQuery.

嗨,我刚刚发现我的web应用程序很慢,可能是因为linq

我对那些已编译的查询有点不知所措,你能帮我编译一个查询并使它仍然可以用于查询吗?(这可以理解吗?:p) 例如,此查询(在vb.net中):

然后我想确保仍然能够做这样的事情:

Dim level0 = (From l In query Where l.level = 0 Order By l.index Ascending Select l)
谢谢你的帮助

编辑:

我试着这么做:

Dim myquery = CompiledQuery.Compile( _
    Function(db As EshopDataContext) _
      (From p In db.ProductCategories _
               Group Join t In db.Translate_ProductCategories On p.ID_Category Equals t.Category_ID Into res = Group From r1 In res.DefaultIfEmpty _
               Where r1.Language_ID = langID And p.CategoryActive = True _
               Select New With {.name = r1.Name, .idcat = p.ID_Category, .level = p.CategoryLevel, .index = p.CategoryIndex, .parentID = p.CategoryParent_ID}))

Dim query = myquery.Invoke(db)

Dim level0 = (From l In query Where l.level = 0 Order By l.index Ascending Select l)
我在这一行出现错误“查询结果不能被多次枚举”

cptCat1 = level1.Where(Function(l1) l1.parentID = parentId1).Count
请先阅读以下内容:

如果您在阅读完这些内容后真的认为必须这样做,那么下面是如何从MS开始编译查询的

(用于linq2sql)


(对于linq2EF)

是什么让你觉得它因为linq而变慢?您的数据源是什么(数据库、对象集合、其他?),因此::)您是否尝试过要编译的那篇文章中的语法?在编译和比较之前,您不能因为已编译的查询而得出查询速度慢的结论。这是一个需要多次执行的查询吗?如果不执行,编译也无济于事。使用log从您LINQ获取TSQL,并在SSMS中显示估计的执行计划。是的,我尝试过,但我无法继续,因为它说::查询结果不能枚举多次。请始终发布引发错误的代码和错误消息。
cptCat1 = level1.Where(Function(l1) l1.parentID = parentId1).Count