Обновить свойство объекта на основе значения
У меня есть сценарий, где мне нужно выбрать одно из свойств для обновления на основе значения времени выполнения.
Person
PersonId
PeriodAge1
PeriodAge2
PeriodAge3
..
Period50
int currentPeriod = GetCurrentPeriodFromWhereEver();
Person p = Context.Persons.where(p=>p.PersonId=="Doe").firstOrDefault();
if(currentPeriod==1)
p.PeriodAge1 = 10
else if (currentPeriod==2)
p.PeriodAge2 = 112
...
else if (currentPeriod==50)
p.PeriodAge50 = 221
Есть лучший способ сделать это? Есть ли в любом случае, чтобы объединить строку в рамках сущности, что-то, что позволит мне сделать это
string pAge = "PeriodAge";
string cPeriod = "5";
string combinedProperty = pAge + cPeriod; //PeriodAge5
Person p = Context.Persons.where(p=>p.PersonId=="Doe")
.FirstOrDefault()
.Update(p=>combinedProperty = 111);
1 ответ
Решение
Вы можете использовать что-то вроде этого
string pAge = "PeriodAge";
string cPeriod = "5";
string combinedProperty = pAge + cPeriod; //PeriodAge5
var person = Context.Persons.FirstOrDefault(p => p.PersonId == "Doe");
// The essential part:
Context.Entry(person).Property(combinedProperty).CurrentValue = 111;