0

次のLINQクエリがあります。

From metasect In DirectCast(Form.ChildDocBox.Tag, META_DOCUMENT).META_SECTIONS
From metaset In metasect.META_SETS
From metacell In metaset.META_CELLS
From lookup In metacell.CHILD_META_CELL_CELLS_LOOKUPS
Where lookup.PARENT_META_CELL_META_CELL.META_SET.META_SECTION.META_DOCUMENT.META_DOC_ID = docToDelete.META_DOC_ID
Select metasect.META_SECT_NAME + " gets from " + lookup.PARENT_META_CELL_META_CELL.META_SET.META_SECTION.META_SECT_NAME Distinct

Select命令は、繰り返すことができる式を選択します。これは、親と子のメタセクションの同じカップルに複数のルックアップあるためです。そのため、 Distinct句を追加し ました。

ここで、親子のカップルごとにルックアップがいくつあるかを数えたいと思います。

何かのようなもの

SELECT metasect.META_SECT_NAME + " gets from " + lookup.PARENT_META_CELL_META_CELL.META_SET.META_SECTION.META_SECT_NAME,
       COUNT(lookup)
FROM ...
WHERE ...
GROUP BY metasect.META_SECT_NAME + " gets from " + lookup.PARENT_META_CELL_META_CELL.META_SET.META_SECTION.META_SECT_NAME

提案を事前に感謝します:)

4

1 に答える 1

0

2段階のアプローチで解決しました

Dim all = From metasect In DirectCast(Form.ChildDocBox.Tag, META_DOCUMENT).META_SECTIONS
          From metaset In metasect.META_SETS
          From metacell In metaset.META_CELLS
          From lookup In metacell.CHILD_META_CELL_CELLS_LOOKUPS
          Where lookup.PARENT_META_CELL_META_CELL.META_SET.META_SECTION.META_DOCUMENT.META_DOC_ID = docToDelete.META_DOC_ID
          Select lookup


For Each grp As IGrouping(Of String, ICELLS_LOOKUP) In
         all.GroupBy(Function(l) l.CHILD_META_CELL_META_CELL.META_SET.META_SECTION.META_SECT_NAME + " gets from " + l.PARENT_META_CELL_META_CELL.META_SET.META_SECTION.META_SECT_NAME)

    'do some stuff with grp.Key() & grp.Count()'

Next
于 2012-06-22T09:21:05.040 に答える