У меня есть класс сказать
public class CostStore
{
int DirectorateId { get; set; }
decimal NewCar { get; set; }
decimal ContractorNew { get; set; }
decimal ContractorRenew { get; set; }
decimal ContractorLost { get; set; }
decimal ContractorStolen { get; set; }
decimal InternalNew { get; set; }
decimal InternalRenew { get; set; }
decimal InternalLost { get; set; }
decimal InternalStolen { get; set; }
}
и в моем контроллере я хочу узнать, скажем
var c = from p in _service.List().Where (condition) p.InternalNew/InternalRenew
(и т. Д.) Свойство, основанное на переменной сеанса, как в приведенной ниже функции, как я могу сделать это в операторе linq ... любые идеи (_service.List () перечисляют IEnumerable класса CostStore
private string FindProperty()
{
switch (Session[Constants.FORMSESSIONKEY].ToString())
{
case Constants.NEWAPP:
return "InternalNew";
case Constants.LOST:
return "InternalLost";
case Constants.NEWCAR:
return "NewCar";
case Constants.OTHER:
return "InternalStolen";
case Constants.RENEW:
return "InternalRenew";
default:
return String.Empty;
}
}
В настоящее время я должен сделать это
private Decimal FindProperty()
{
switch (Session[Constants.FORMSESSIONKEY].ToString())
{
case Constants.NEWAPP:
return (from p in _costStoreService.List().Where(p => p.DirectorateId == _applicant.DirectorateId)
select p.InternalNew).Single() ?? 0.0M;
case Constants.LOST:
return (from p in _costStoreService.List().Where(p => p.DirectorateId == _applicant.DirectorateId)
select p.InternalLost).Single();
case Constants.NEWCAR:
return (from p in _costStoreService.List().Where(p => p.DirectorateId == _applicant.DirectorateId)
select p.NewCar).Single();
case Constants.OTHER:
return (from p in _costStoreService.List().Where(p => p.DirectorateId == _applicant.DirectorateId)
select p.InternalStolen).Single();
case Constants.RENEW:
return (from p in _costStoreService.List().Where(p => p.DirectorateId == _applicant.DirectorateId)
select p.InternalRenew).Single();
default:
return 0.0M;
}
}
но много повторяющегося кода, также нет проверки последовательности, содержащей 0 значений ...