我有一张普通的桌子,我试图创建一个嵌套组。然后我会将其序列化以供我的客户使用。
此网站是用VB.net编写的,我在理解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 ║
╚═══════╩════════╩═══════╩══════╝
我的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"}]}
]
我不能确定如何进行子组和子列表,从而能够成为一个常规组。
在C#中,我能够做一个简单组和一个列表
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 :(得分:2)
请注意,您不希望将Stop用作属性名称,因为它是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})})