2017-12-13 8 views
0

私はプレーンなテーブルを持っており、ネストされたグループを作成しようとしています。私はそれを私のクライアントによって消費されるようにシリアル化します。Linqを使用してネストされたグループとサブリストを作成する

このウェブサイトはVB.netで書かれていると私は私がすることができた私のLINQ JSON出力は

[{"Truck":"123","Status":"A","StoreList":[{"Store":"NY","StopCount":"2"},{"Store":"BOS","StopCount":"1"}],"StopsList":[{"Store":"NY","Stop":"A1"},{"Store":"NY","Stop":"B1"},{"Store":"BOS","Stop":"C1"}]}, 

{"Truck":"456","Status":"A","StoreList":[{"Store":"NJ","StopCount":"2"}],"StopsList":[{"Store":"NJ","Stop":"A1"},{"Store":"NJ","Stop":"B1"}]}, 

{"Truck":"222","Status":"C","StoreList":[{"Store":"CT","StopCount":"4"}],"StopsList":[{"Store":"CT","Stop":"A1"},{"Store":"CT","Stop":"B1"},{"Store":"CT","Stop":"C1"},{"Store":"CT","Stop":"D1"}]} 
] 

のようになりますLINQ vb.net

Table: 
    ╔═══════╦════════╦═══════╦══════╗ 
    ║ Truck ║ Status ║ Store ║ Stop ║ 
    ╠═══════╬════════╬═══════╬══════╣ 
    ║ 123 ║ A  ║ NY ║ A1 ║ 
    ║ 123 ║ A  ║ NY ║ B1 ║ 
    ║ 123 ║ A  ║ BOS ║ C1 ║ 
    ║ 456 ║ A  ║ NJ ║ A1 ║ 
    ║ 456 ║ A  ║ NJ ║ B1 ║ 
    ║ 222 ║ C  ║ CT ║ A1 ║ 
    ║ 222 ║ C  ║ CT ║ B1 ║ 
    ║ 222 ║ C  ║ CT ║ C1 ║ 
    ║ 222 ║ C  ║ CT ║ D1 ║ 
    ╚═══════╩════════╩═══════╩══════╝ 

を理解する問題を抱えていますサブグループとサブリストをどうやってやるのかを確かめて、定期的なグループを作ってください。 C#ので

私はsimpelグループを行うことができるし、リスト

var query = queryJoin.GroupBy(x => x.Truck) 
       .Select(group => new MainTrailerList 
       { 
        Truck = group.Key, 
        Status = group.First().Status, 
        StopsList = group.Select(a => new TrailerPosition { Store = a.Store, Stop = a.Stop }) 
       }); 

      return Json(query, JsonRequestBehavior.AllowGet); 

だけどVb.netで、私は、ネストされたグループと2つのリストを行う必要があります。

+0

あなたがオンラインコードコンバータhttp://converter.telerik.com/のいくつかを試すことができます – Slai

+0

私はそれを試してみましたが、あなたがいる限り、プロパティ名として 'Stop'を使用することができ、適切 – causita

答えて

2

VBでは予約語であるため、[停止]はプロパティ名として使用しないことに注意してください。代わりにStopDetailを使用しました。

queryJoin.GroupBy(Function(t) t.Truck) _ 
    .Select(Function(t) New MainTrailerList With { 
     .Truck = t.Key, 
     .Status = t.First().Status, 
     .StopsList = t.Select(Function(s) new TrailerPosition with { 
      .Store = s.Store, 
      .StopDetail = s.StopDetail})}) 
+2

注意を変換しませんでした角カッコでエスケープします(例: '[Stop]') –

関連する問題