如果我只是像这样使用linq join:
Join(db.opnameadres,
afspraak => afspraak.OpnameAdres_idOpnameAdres,
opnameadres => opnameadres.idOpnameAdres,
(afspraak,opnameadres)=>new {afspraak,opnameadres})
我得到这样的结果:
{
"afspraak": {
"idOpnameAfspraak": 2,
"OpnameAdres_idOpnameAdres": 459,
"Starttijd": "08:00:00",
"Eindtijd": "12:00:00",
"Opmerkingen": "test",
"OpnameAfspraakStatus_idOpnameAfspraakStatus": 5,
"Moment": "2015-10-23T11:54:29+02:00",
"GebeldDoor": "0318-541206",
"Datum": "2015-10-26T00:00:00",
"Contact_idContact": null
},
"opnameadres": {
"idOpnameAdres": 459,
"Straat": "Hogeveenseweg",
"Huisnummer": 24,
"Toevoeging": null,
"Postcode": "2631PH",
"Plaats": "Nootdorp",
"Land": null,
"OpnameProject_idOpnameProject": 21,
"ToegevoegdOp": "2015-10-12T16:08:34+02:00",
"Lon": 4.4096915038546,
"Lat": 52.0403085252309,
"RDX": null,
"RDY": null
}
}
我想要的只是这个:
{
"idOpnameAfspraak": 2,
"OpnameAdres_idOpnameAdres": 459,
"Starttijd": "08:00:00",
"Eindtijd": "12:00:00",
"Opmerkingen": "test",
"OpnameAfspraakStatus_idOpnameAfspraakStatus": 5,
"Moment": "2015-10-23T11:54:29+02:00",
"GebeldDoor": "0318-541206",
"Datum": "2015-10-26T00:00:00",
"Contact_idContact": null
"idOpnameAdres": 459,
"Straat": "Hogeveenseweg",
"Huisnummer": 24,
"Toevoeging": null,
"Postcode": "2631PH",
"Plaats": "Nootdorp",
"Land": null,
"OpnameProject_idOpnameProject": 21,
"ToegevoegdOp": "2015-10-12T16:08:34+02:00",
"Lon": 4.4096915038546,
"Lat": 52.0403085252309,
"RDX": null,
"RDY": null
}
如何实现这一点,而无需输入每个属性?
答案 0 :(得分:1)
您应该能够使用反射在afspraak
部分中为opnameadres
和new
的属性合并并返回动态对象:
var propsOpnameadres = typeof(db.opnameadres).GetProperties().ToList();
var propsdAfspraak = typeof(db.afspraak).GetProperties().ToList();
Join(db.opnameadres,
afspraak => afspraak.OpnameAdres_idOpnameAdres,
opnameadres => opnameadres.idOpnameAdres,
(afspraak, opnameadres) => {
dynamic res = new ExpandoObject();
propsdAfspraak.ForEach(pp => res[pp.Name] = pp.GetValue(afspraak));
propsOpnameadres.ForEach(pp => res[pp.Name] = pp.GetValue(opnameadres));
return res;
});