我目前正在浏览项目列表(酒店),如果内容编辑器输入超过1晚的价格,我需要找出每晚的价格。
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.BaseRate
从string
转换为int
。所以我有必要将hotel.BaseRate
除以daysDuration
以获得每晚的价格,因为它们现在都是整数。请告诉我我做错了什么,因为我在foreach循环中的最后一行代码给了我错误信息:
无法将int类型隐式转换为字符串。
答案 0 :(得分:4)
您在行中先将convertInt定义为字符串:
string convertInt = hotel.BaseRate;
答案 1 :(得分:3)
string convertInt = hotel.BaseRate;
int nightRate;
int.TryParse(hotel.BaseRate, out nightRate);
convertInt = nightRate / daysDuration;
您首先将convertInt
声明为字符串,然后尝试将其设置为等式中的响应。
删除第一行并将最后一行设置为:
int convertInt = nightRate / daysDuration;
答案 2 :(得分:2)
您无法将int转换为字符串(convertInt是此实例中的字符串)。
但是,你可以这样做:
convertInt = (nightRate / daysDuration).ToString();
另外,作为旁注: 如果你正在处理金钱,你不应该使用Int,就好像你在3晚住宿15英镑一样,答案是5.33英镑 - 但是int不能保留小数位。
答案 3 :(得分:1)
请更改您的代码。
Old code : convertInt = nightRate / daysDuration;
New code : convertInt = (nightRate / daysDuration).ToString();
请使用新的代码行更新您的旧代码行。
谢谢。
答案 4 :(得分:1)
你的问题在这里:
foreach (var hotel in hotels)
{
string convertInt = hotel.BaseRate;
int nightRate;
int.TryParse(hotel.BaseRate, out nightRate);
convertInt = nightRate / daysDuration;
}
convertInt
为string
,您尝试将int
值格式nightRate / daysDuration
保存到其中。您需要使用(nightRate / daysDuration).ToString()
所以你的行:
convertInt = nightRate / daysDuration;
应该是:
convertInt = (nightRate / daysDuration).ToString();
答案 5 :(得分:0)
您的错误是混合类型。程序需要一个字符串,其中有一个int,所以你必须在int上调用.ToString()。更好的是重构代码,以便在调用计算之前使用适当的类型定义所需的所有变量。顺便说一句,推荐的货币类型是Decimal。 int的问题在于你不能代表它的十进制单位,例如分数,并且使用double会出现舍入问题。