2016-10-21 74 views
-3

我目前正在迭代項目列表(酒店),如果內容編輯器輸入超過1晚的價格,我需要找出每晚的價格。C#類型轉換(字符串轉換爲int)

if (!string.IsNullOrEmpty(resource)) 
{ 
    var results = JsonConvert.DeserializeObject(resource).ToString(); 
    if (!string.IsNullOrEmpty(results)) 
    { 
     var hotels = JsonConvert.DeserializeObject<ContainerHotelViewModel>(results).Hotels; 

     if (daysDuration > 1) 
     { 
      foreach (var hotel in hotels) 
      { 
       string convertInt = hotel.BaseRate; 
       int nightRate; 
       int.TryParse(hotel.BaseRate, out nightRate); 
       convertInt = nightRate/daysDuration;      
      } 
     } 

     return SortHotels(hotelIds, hotels); 
    } 
} 

所以我的理解是,我已經轉換hotel.BaseRatestringint。因此,對於我來說,將hotel.BaseRate除以daysDuration以獲得每晚的價格是合理的,因爲它們現在都是整數。請告訴我做錯了,因爲我在foreach循環中的最後一行代碼給了我錯誤信息:

不能將int類型隱式轉換爲字符串。

+0

請爲將來的問題提供[MCVE]。即在這種情況下,它會是'string convertInt = 4/2;'這本可以幫助你找到問題。 –

回答

3
string convertInt = hotel.BaseRate; 
int nightRate; 
int.TryParse(hotel.BaseRate, out nightRate); 
convertInt = nightRate/daysDuration; 

你首先聲明爲一個字符串,然後嘗試將其設置爲從您的方程迴應。

刪除第一行和最後設定爲這樣:

int convertInt = nightRate/daysDuration; 
+0

感謝您的分解和幫助J.R. :) – Jim41Mavs

4

你在該行定義爲convertInt前面的字符串:

string convertInt = hotel.BaseRate; 
+0

現在一切都有意義!謝謝你的幫助! – Jim41Mavs

1

請改變你的代碼。

Old code : convertInt = nightRate/daysDuration; 

New code : convertInt = (nightRate/daysDuration).ToString(); 

請使用新的代碼行更新舊代碼行。

謝謝。

2

您無法將int轉換爲字符串(convertInt是此實例中的字符串)。

但是,您可以做到這一點:

convertInt = (nightRate/daysDuration).ToString(); 

此外,作爲一個側面說明: 如果你用錢的工作,你不應該使用int,因爲如果你要devide 3£15晚上,答案將是5.33英鎊 - 但int不能保留小數位。

+0

感謝您的幫助,我會就不使用int的金錢徵求您的意見! – Jim41Mavs

+0

道歉@ Jim41Mavs,看來我完全忘了把你應該使用什麼類型的變量。 而不是詮釋,使用一個雙:) 此外,做一些研究'VAR'命令聲明變量。 –

+0

會做,謝謝馬克! – Jim41Mavs

1

你poblem是在這裏:

foreach (var hotel in hotels) 
{ 
    string convertInt = hotel.BaseRate; 
    int nightRate; 
    int.TryParse(hotel.BaseRate, out nightRate); 
    convertInt = nightRate/daysDuration; 
} 

string並嘗試保存到它int價值形態nightRate/daysDuration。您需要使用(nightRate/daysDuration).ToString()

所以你行:

convertInt = nightRate/daysDuration; 

應該是:

convertInt = (nightRate/daysDuration).ToString(); 
0

你的錯誤是類型的混合起來的。該程序需要一個字符串,其中有一個int,所以你將不得不在int上調用.ToString()。更好的方法是重構代碼,以便在調用計算之前使用正確的類型定義所有需要的變量。順便說一下,貨幣的推薦類型是Decimal。 int的問題是你不能表示它的十進制單位,例如分,並且使用double有舍入問題。