C# Linq连接而不添加层

C# Linq连接而不添加层,c#,linq,C#,Linq,如果我只是像这样使用linq join: Join(db.opnameadres, afspraak => afspraak.OpnameAdres_idOpnameAdres, opnameadres => opnameadres.idOpnameAdres, (afspraak,opnameadres)=>new {afspraak,opnameadres}) { "afspraak": { "idOpnameAfsp

如果我只是像这样使用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
    }
  }
我得到的结果如下:

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
}

如何在不必键入每个属性的情况下实现这一点?

您应该能够使用反射并返回动态对象,在
新建部分中执行
afspraak
opnamedres
属性的合并:

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;
  });

我想我应该说得更清楚些。这确实是一种方法,目前我正在这样做。但是,我想知道是否有一种方法可以做到这一点,而不必键入所有内容。请参阅更新的答案,了解如何使用反射来实现这一点