2015-11-13 3 views
1

Если я просто использовать LINQ присоединиться, как это:Linq присоединиться без добавления слоя

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

Возможный дубликат [LINQ - полное внешнее соединение] (Http://stackoverflow.com/questions/5489987/linq-full-outer-join) – fuchs777

ответ

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

Думаю, я должен был быть более ясным. Это действительно способ сделать это, и пока я это делаю. Тем не менее, я хотел бы знать, есть ли способ сделать это, не вводя все. –

+1

См. Обновленный ответ о том, как к этому можно подойти, используя отражение – HashPsi

Смежные вопросы