In my WebAPI, I'm using EF. I'm currently getting my data out using a LINQ statement.
My LINQ is:
var output = _context.CarMakes
.Select(x => new
{
id= x.CarId,
make = x.CarMake,
year = x.Year,
status = x.Status
});
my data is returned as:
[
{
"id": 1,
"make": "Ford",
"year" : 2020,
"model" : "Focus"
},
{
"id" : 2,
"make" :"Ford",
"year" : 1994,
"model" : "F-150"
},
{
"id" : 3,
"make" : "Chevy",
"year" : 2022,
"model" : "Silverado"
}
]
How can I get it returned so it's grouped so I can use it in a TreeView navigation menu such as: What changes should I make to the .NET code?
Ford:
2020
Focus
1994
F-150
Chevy
2022
Silverado
CodePudding user response:
you need to use group by to get the result needed, here is an example :
var result = _context.CarMakes.GroupBy(x => x.make)
.Select(g => new {
Make = g.Key,
Models = g.GroupBy(x => x.year)
.Select(y => new {
Year = y.Key,
Name = y.Select(z => z.model)
})
});
CodePudding user response:
You have to perform group by on make
and year
fields and then select all the cars that come under those grouping. Then in the front end, you can use this returned data to make a nested tree view.
var output = _context.CarMakes
.Select(x => new
{
id = x.CarId,
make = x.CarMake,
year = x.Year,
status = x.Status
})
.GroupBy(x => new { x.make, x.year })
.Select(g => new
{
make = g.Key.make,
year = g.Key.year,
cars = g.Select(x => new { id = x.id, status = x.status })
});