Size: a a a

🎄.NET Talks: Evergreen🎄

2020 February 19

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
добрый подскажите
а то что то все грустно в жизни
хочу получить в результате join коллекцию анонимных классов которые просто сджойнят все поля как в sql без указания как именно join их
как это можно сделать
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
вообще пытаюсь сделать вложенный join
но что то делаю не так
a join (b join c)
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Кури рефлексию
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
зачем?
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Что значит "сджойнят все поля как в sql без указания как именно join их "?
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Ты хочешь на основе нескольких объектов создать мегаобъект в котором будут объединены поля всех этих объектов? Что-то вроде этого?
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
ну да
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
как в бд
источник

s

semptra in 🎄.NET Talks: Evergreen🎄
ручками только
источник

s

semptra in 🎄.NET Talks: Evergreen🎄
или делай объект-обертку над словарем где храни ключ-значение как название проперти и его значение
источник

s

semptra in 🎄.NET Talks: Evergreen🎄
но только только через индексатор доставать и строками
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Через typeof(Твой тип).GetFields() ты можешь получить коллекцию полей типа, после чего зафигарить новый объект со всеми этими полями
источник

s

semptra in 🎄.NET Talks: Evergreen🎄
Egor Gusarenko
Через typeof(Твой тип).GetFields() ты можешь получить коллекцию полей типа, после чего зафигарить новый объект со всеми этими полями
Я думаю второе можно через Expression сделать который будет новый тип конструировать, но не уверен
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Если это очень много где нужно и вообще болезненная вещь можно заюзать AutoMapper
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Ну или попробовать что-то вроде этого http://kylefinley.net/typemerger
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Если это единичное место и классы не сильно громоздкие то в принципе не так уж больно будет и размаппить ручками
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
Создав новый анонимный объект как
new {
object1.field1,
object1,field2,
object2.field1,
object2.field2
}

и т.д. и т.п.
источник

s

semptra in 🎄.NET Talks: Evergreen🎄
источник

EG

Egor Gusarenko in 🎄.NET Talks: Evergreen🎄
object myObj = lambda.Compile().DynamicInvoke();

Не будет ну очень сильно бить по производительности?

Ну а вообще прикольное решение, интересно
источник

s

semptra in 🎄.NET Talks: Evergreen🎄
источник