【问题标题】:count the number of models with a certain Enum value统计具有某个 Enum 值的模型数量
【发布时间】:2013-08-24 00:24:05
【问题描述】:

我想获取具有特定枚举值的模型数量。 像这样的:

  (@Model.Status == "pending").Count().tostring())

  (@Model.Status.Contains("pending").Count().tostring())

所有模型最初都被传回,然后按它们的状态分组。 例如@Model.Count() 将返回所有模型(待定、已接受等)

具体来说,这个计数将在收件箱中显示为一个数字,因此最终结果如下所示:

待定 (8) 已接受 (3)....等

请注意,这是一个使用 razor 2 视图的 asp.net MVC 4 应用程序。

【问题讨论】:

    标签: c# html asp.net-mvc-4 razor


    【解决方案1】:

    你可以使用重载的Count方法:

    @Model.Count(m => m.Satus == YourEnum.Pending)
    

    【讨论】:

    • 下面的解释从来都不是那么直截了当,啰嗦,干杯
    【解决方案2】:

    要计算特定条件,您必须在 Count 方法中使用谓词,如下所示:

    (@Model.Count(s => s.Status == StatusEnum.Pending).ToString())
    

    另外,如果您的枚举名称只有 string 形式,则需要使用 Enum.Parse 来获取值,如下所示:

    (StatusEnum)Enum.Parse(typeof(StatusEnum), "Pending")
    

    结果将是:

    (@Model.Count(s => s.Status == (StatusEnum)Enum.Parse(typeof(StatusEnum), "Pending")).ToString())
    

    【讨论】:

    • 从来没有那么简单,我的包含模型的类与枚举有以下关系...public ReferralInteractionMode(ReferralStatus status),这是在它自己的类中,其中推荐状态是我的枚举,其中包括 switch 语句,以及一些公共 bool 的值由 switch 语句中的情况决定....所以结果我无法完成这一行 @Model.Count(m => m.Status == ? 因为我使用的是不同的模型,所以包含另一个模型是一种好习惯吗??还是有其他方法....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2020-05-24
    • 2015-10-06
    • 1970-01-01
    • 2013-04-15
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多