1

If I simply use linq join like this:

Join(db.opnameadres, 
    afspraak => afspraak.OpnameAdres_idOpnameAdres, 
    opnameadres => opnameadres.idOpnameAdres, 
    (afspraak,opnameadres)=>new {afspraak,opnameadres})

I get a result like this:

  {
    "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
    }
  }

What I want is simply this:

{
  "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
}

How can I achieve this, without having to type out every single attribute?

Daniël van den Berg
  • 1,941
  • 1
  • 16
  • 37
  • Possible duplicate of [LINQ - Full Outer Join](http://stackoverflow.com/questions/5489987/linq-full-outer-join) – fuchs777 Nov 13 '15 at 14:09

1 Answers1

1

You should be able perform the merge of the properties for afspraak and opnameadres in the new portion using reflection and returning a dynamic object:

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;
  });
HashPsi
  • 1,373
  • 2
  • 12
  • 22
  • I guess I should have been more clear. That is indeed a way to do it, and for now I'm doing it this way. However, I'd like to know if there's a way of doing this without having to type everything out. – Daniël van den Berg Nov 13 '15 at 14:21
  • 1
    See updated answer on how this can be approached using reflection – HashPsi Nov 13 '15 at 23:36