2014-01-06 1 views
0

Я предполагаю, что я довольно близко. У меня есть значение StartedAgent, которое будет содержать определенную дату, введенную пользователем. Допустим, они вошли в «1/1/1985». Затем я хочу создать рассчитанное свойство, которое я смогу использовать, чтобы показать, сколько лет с тех пор, как этот агент впервые начал работать в Real Estate. Ниже мой класс. Я попытался нанести удар, но я скоро приду. Я использую MVC 5, EF 6 & .Net 4.5 в аромате C#.Рассчитать годы в POCO Рассчитанное свойство

namespace OrlandoAppraiser.Models 
    { 
     public class Appraiser 
     { 
      public int AgentID { get; set; } 
      public string Name { get; set; } 
      public string LicenseNum { get; set; } 
      public DateTime StartedAgent { get; set; } 

      public string YearsAsAgent 
      { 
       get { return (Math.Floor((DateTime.Now - StartedRealEstate).TotalDays/365.25D)); } 
      } 
     } 
    } 

Я посмотрел на некоторые разные ответы, но у меня возникают проблемы с поиском способов сделать это просто внутри вычисляемого свойства. Я знаю, что это не должно быть так сильно, но я получаю ошибки с моим кодом.

+2

Я получаю ошибки не достаточно. Какие ошибки? – MarcinJuraszek

+0

Просто, чтобы вы знали, я не голосовал за ваш вопрос. – MarcinJuraszek

+0

Ошибка: «Невозможно преобразовать тип implicity double в строку». –

ответ

2

Это довольно простой подход. Убедитесь, что вы вызываете ToString(), если это свойство является строкой.

public string YearsAsAgent 
{ 
    get { return (DateTime.Now.Year - StartedRealEstate.Year).ToString(); } 
} 
+0

ДА! Когда я смущаю голову. Я ценю всю вашу помощь Роуэн, это не первый раз, когда вы мне помогли! Я должен тебе немного пива! Везде, где я искал другие примеры, они использовали math.floor, но это проще. –

0

Это должно помочь. Модифицированная версия this.

DateTime _startedRealEstate = new DateTime(2012, 11, 15); 
public DateTime StartedRealEstate { get { return _startedRealEstate; } set { _startedRealEstate = value; } } 

public int YearsAsAgent 
{ 
    get 
    { 
     DateTime zeroTime = new DateTime(1, 1, 1); 
     TimeSpan span = DateTime.Now - StartedRealEstate; 
     int years = (zeroTime + span).Year - 1; 
     return years; 
    } 
} 


private void button1_Click_2(object sender, EventArgs e) 
{ 
     int totalYears = YearsAsAgent; 
} 
+0

Не можете ли вы упростить его до 'DateTime.Now.Year - StartedRealEstate.Year'? –

+0

Я мог бы заставить это работать, но я использую MVC, поэтому не пользуюсь никакими нажатиями кнопок. Извините, если моя терминология сбивает с толку, я новичок в C# –

+0

. Щелчок кнопки - это всего лишь мой пример кода о том, как его использовать. Вы можете использовать это свойство прямо в любом месте. – Ehsan

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