Хотя часто мы привыкли видеть объекты с общедоступными свойствами без какого-либо контроля доступа, JavaScript позволяет нам точно описывать свойства. Фактически, мы можем использовать дескрипторы, чтобы контролировать доступ к объекту и какую логику мы можем применить к нему. Рассмотрим следующий пример:
var employee = {
first: "Boris",
last: "Sergeev",
get fullName() {
return this.first + " " + this.last;
},
set fullName(value) {
var parts = value.toString().split(" ");
this.first = parts[0] || "";
this.last = parts[1] || "";
},
email: "boris.sergeev@example.com"
};
Конечный результат:
console.log(employee.fullName); //Boris Sergeev
employee.fullName = "Alex Makarenko";
console.log(employee.first);//Alex
console.log(employee.last);//Makarenko
console.log(employee.fullName);//Alex Makarenko
Вы можете использовать GroupBy и Anonymous type для достижения этой цели.
var result = list.GroupBy(x=>x.day)
.Select(x=> new
{
day=x.Key,
detail = x.ToList().Select(c=>
new
{
product=c.product,
value=c.value
})
});
Вы можете сделать это с анонимным типом, используя linq
var listNew = listBase.Select(x => new
{
day= x.day,
details= new
{
product= x.product,
value = x.value
}
}).ToList();
.