こんにちは、おそらく linq が原因で、Web アプリケーションが遅いことがわかりました。
コンパイルされたクエリでちょっと迷っています。クエリをコンパイルして、クエリのクエリに使用できるようにするのを手伝ってもらえますか? (それは理解できますか?:p)たとえば、このクエリ(vb.net内):
Dim query = (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 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