1

私はこのような構造コレクションを持っています:

Jet     Owner   Item    Comp
AAAA    AAAA    101     2210
AAAA    AAAA    202     2220
AAAA    AAAA    301     5550
AAAA    AAAA    301     5560
AAAA    2210    101     6789
AAAA    2220    202     ABABA
AAAA    5550    301     XXXX0
AAAA    5550    301     XXXX1
AAAA    5560    301     YYYY0
AAAA    5560    301     6612
AAAA    6789    101     ZZZZZ.0
AAAA    6789    101     ZZZZZ.1
AAAA    6789    101     ZZZZZ.2
AAAA    6789    101     ZZZZZ.3
AAAA    ABABA   202     TTTTT.0
AAAA    ABABA   202     TTTTT.1
AAAA    ABABA   202     TTTTT.2
AAAA    6612    301     ZZZZZ.0
AAAA    6612    301     ZZZZZ.1
AAAA    6612    301     ZZZZZ.2
AAAA    6612    301     ZZZZZ.3
AAAB    ...     ...     .....

次のような結果になるように注文する必要があります。

Jet     Owner   Item     Comp
AAAA    AAAA    101      2210
AAAA    2210    101      6789
AAAA    6789    101      ZZZZZ.0
AAAA    6789    101      ZZZZZ.1
AAAA    6789    101      ZZZZZ.2
AAAA    6789    101      ZZZZZ.3
AAAA    AAAA    202      2220
AAAA    2220    202      ABABA
AAAA    ABABA   202      TTTTT.0
AAAA    ABABA   202      TTTTT.1
AAAA    ABABA   202      TTTTT.2
AAAA    AAAA    301      5550
AAAA    5550    301      XXXX0
AAAA    5550    301      XXXX1
AAAA    AAAA    301      5560
AAAA    5560    301      YYYY0
AAAA    5560    301      6612
AAAA    6612    301      ZZZZZ.0
AAAA    6612    301      ZZZZZ.1
AAAA    6612    301      ZZZZZ.2
AAAA    6612    301      ZZZZZ.3
AAAB    ...       ...      .....

Jetで注文したいのですが、コンプで所有者の中にあるものを見つけたら、関連するコンポーネントの主な所有者の後に行を入力し、所有者で注文し、最後にアイテムで注文します。C#linqクエリで結果を作成しましたが、VB.NETlinqクエリでも同じ結果を得る必要があります。C#Linqクエリは次のとおりです。

    var orderedData =(from d in collection
        group d by d.Jet into g
        orderby g.Key
        from d in g
        select new[] {d}.Union(g.Where(c => c.Owner == d.Comp)) into withChildren
        from wc in withChildren
        orderby wc.Item
        select wc).Distinct();

VB.NETでこれを試しましたが、機能しません。

Dim orderedData = (From d In collection 
              Group d By d.Jet Into Group 
              Order By Group 
              From d In Group 
              Select New withChildren With {d}.Union(gr.Where(Function(c) c.Owner = d.Comp))) 
                          from wc in withChildren
                          Order By wc.pos 
                          Select wc).Distinct
                          from wc in withChildren
                          Order By wc.pos 
                          Select wc).Distinct
4

1 に答える 1

0

それを試してみてください:

Dim orderedData = (From withChildren In From g In From d In collectionGroup d By d.JetOrder By g.KeyFrom d In gNew () {d}.Union(g.Where(Function(c) c.Owner = d.Comp))From wc In withChildrenOrder By wc.Itemwc).Distinct()

于 2012-04-19T11:30:08.730 に答える