首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MVC中将int转换为文本

在MVC中将int转换为文本
EN

Stack Overflow用户
提问于 2014-02-13 19:29:39
回答 1查看 76关注 0票数 0

标题可能需要更改。

我有一个有TurnTime_MinHours和TurnTime_MaxHours列的表。看上去像这样

代码语言:javascript
复制
TurnTime_MinHours | TurnTime_MaxHours
---------------------------------------
      0                     24             //represents 1 day
     24                     48             //represents 1-2 days
     24                     72             //represents 2-3 days
     24                     120            //represents 1-5 days

现在,问题出现在我的MVC应用程序的View部分。我想以一种友好的方式显示这些数据,比如"1天“、"1-3天”、"1-5天“,而不是整数值。

我首先尝试创建一个小的switch case函数来实现这一点,但是我遇到了将int字段转换为string字段的问题。

我只是为类似的情况实现了三元结构,但我不确定它在这种情况下是否有效。三元参考:Handling tinyInt booleans with MVC

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 19:42:58

类似的情况--您可以将您的范围添加到Tuple<int, int>中,然后使用TimeSpan.TotalDays进行转换:

Update:一种替代的、不那么冗长的处理方法(由于可读性,我不会进一步减少这种情况):然而,这种方法牺牲了一些性能,因为即使在不使用时,它也会运行第一个TimeSpan实例转换。假设只有一个实例(当范围为1天),这可能是可以接受的,而且看起来更好。

代码语言:javascript
复制
Func<Tuple<int, int>, string> getDaysFromHoursAlternate = range =>
{
    string format = range.Item2 > 24 ? "{0} - {1} days" : "{1} day";
    return string.Format(format,
            TimeSpan.FromHours(range.Item1).TotalDays,
            TimeSpan.FromHours(range.Item2).TotalDays
    );
};

原始答案w/完整代码:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        List<Tuple<int, int>> ranges = new List<Tuple<int, int>>()
        {
            new Tuple<int, int>(0, 24),
            new Tuple<int, int>(24, 48),
            new Tuple<int, int>(24, 72),
            new Tuple<int, int>(24, 120)
        };

        Func<Tuple<int, int>, string> getDaysFromHours = range =>
        {
            string formatted;
            if (range.Item2 > 24)
            {
                formatted = string.Format(
                    "{0} - {1} days",
                    TimeSpan.FromHours(range.Item1).TotalDays,
                    TimeSpan.FromHours(range.Item2).TotalDays
                );
            }
            else
            {
                formatted = string.Format("{0} day",
                    TimeSpan.FromHours(range.Item2).TotalDays
                );
            }

            return formatted;
        };

        ranges.ForEach(r =>
            Console.WriteLine(getDaysFromHours(r))
        );

        Console.ReadKey();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21763761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档