C# 如何在字符串生成器中执行数学运算?

C# 如何在字符串生成器中执行数学运算?,c#,stringbuilder,C#,Stringbuilder,在我的控制器中,我使用WCF提取一些信息。为了简单起见,我将所有内容都放在StringBuilder()中,并通过foreach循环迭代列表中的信息,如下所示: var myResult = new StringBuilder(); foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList()) htmlResult.AppendFormat("{0} Avg End Time: {1} <b

在我的控制器中,我使用WCF提取一些信息。为了简单起见,我将所有内容都放在
StringBuilder()
中,并通过
foreach
循环迭代列表中的信息,如下所示:

var myResult = new StringBuilder();

foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList())
    htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>", myFruit.ContestantName, myfruit.ContestantEndTime);

return myResult.ToString();
但是,然后错误读取到字符串的格式不正确,即使我将其转换回如下字符串,也会执行相同的操作:

Convert.ToString(Int32.Parse(myfruit.ContestantEndTime) / 60))
我应该怎么做


如果myfruit.contellentEndTime是int,则int.Parse将抛出错误,因为此方法将字符串作为参数。如果是这种情况,则在分割之前不需要对其进行任何操作,只需使用:

htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>", myFruit.ContestantName, 
myfruit.ContestantEndTime / 60);
htmlResult.AppendFormat(“{0}平均结束时间:{1}
”,myFruit.name, myfruit.endtime/60);
如果
myFruit.CompetitorEndTime
int
类型

htmlResult.AppendFormat("{0} Avg End Time: {1} ",
                                   myFruit.ContestantName, myFruit.ContestantEndTime/60);
如果是
字符串
类型,首先使用
convert.ToInt32
方法将其转换为Int值

htmlResult.AppendFormat("{0} 3Avg End Time: {1} ",
                   myFruit.ContestantName, Convert.ToInt32(myFruit.ContestantEndTime)/60);
以上2将生成分钟的整数表示形式(无提醒)。这意味着,如果您的
参赛者结束时间
值为
240
245
,它将只返回
4
。但是如果你想要更多的时间,你可以试试这个

htmlResult.AppendFormat("{0} Avg End Time: {1}.{2} ", myFruit.ContestantName,
                               myFruit.ContestantEndTime/60, myFruit.ContestantEndTime%60);

现在,当您在
myFruit.CompetitorEndTime
中有245个时,上面的表达式将为您提供
4.2

,我敢打赌一个或多个参赛者的结束时间中存在格式错误

你需要做的就是使用它。 您还应该执行
null
检查

foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList())
{
    // -1 will imply that there is an error.
    int parsedTime = -1;

    if (myfruit.ContestantEndTime != null && 
        Int32.TryParse(myfruit.ContestantEndTime, out parsedTime))
    {
        parsedTime /= 60;
    }

    htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>", 
        myFruit.ContestantName, 
        parsedTime);
}
foreach(响应中的var myFruit.getcontesticsresult.contesticsendtimes.ToList())
{
//-1表示存在错误。
int parsedTime=-1;
if(myfruit.contellentEndTime!=null&&
Int32.TryParse(myfruit.contellentEndTime,out parsedTime))
{
解析时间/=60;
}
htmlResult.AppendFormat(“{0}平均结束时间:{1}
”, 我的水果,我的名字, 解析时间); }
无论myFruit.CompetitientEndTime是
null
“foo”
还是
“37281”
,这都会起作用。您可以很容易地确定哪里有错误


这里真正的问题是。。。为什么
myFruit.CompetitiveEndTime
不是开始时的整数(或任何其他数字类型)?

这里的输入错误不是编码中的。你能给我们一个CompetitiveEndTime的例子吗?也许问题是在解析IntI时,我改变了我的变量,提出了一些问题,你可以发布并修复它们。.如果
competitorendtime
字符串
。在解析之前,请确保它可以被解析。请改为尝试
Int32.TryParse()
。我已经先尝试过了。这导致错误
“/”不能应用于字符串和int类型的操作数这不可能是真的。如果它是
int
int.Parse
不会抛出异常,因为代码不会编译。
foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList())
{
    // -1 will imply that there is an error.
    int parsedTime = -1;

    if (myfruit.ContestantEndTime != null && 
        Int32.TryParse(myfruit.ContestantEndTime, out parsedTime))
    {
        parsedTime /= 60;
    }

    htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>", 
        myFruit.ContestantName, 
        parsedTime);
}