如果.Count == 0

时间:2019-08-07 15:13:35

标签: c# asp.net-mvc conditional-operator

在我的MVC视图中,我想使用条件运算符来显示变量的计数,即使它为0

@foreach (var item in Model.TotalNumberProxy.LstFByTAndB)
{
    <tr>
        @using (var db = new ConnectionStringName())
        {
            <td>@db.code_VType.Find(item.Key).VType</td>
        }
        @for (var i = 1; i <= 12; i++)
        {
            <td>
                @(item.Count(x => x.tblFAM.CDate.Month == i) == 0 ? 0 : item.Count(x => x.tblFAM.CDate.Month == i))
            </td>
        }
        <td>@item.Count()</td>
    </tr>
}

在我的for循环中,我正在使用条件运算符,但是即使count为0(这是我的条件语句),也无法显示0。如何显示它?

3 个答案:

答案 0 :(得分:3)

为什么不仅仅返回结果?

@item.Count(x => x.tblFAM.CDate.Month == i)

答案 1 :(得分:2)

IMO将许多内容封装到控制器/模型中会容易得多:

public IActionResult MyControllerMethod()
{
  using (var db = new ConnectionStringName())
  {      
    foreach (var item in Model.TotalNumberProxy.LstFByTAndB)
    {
      LstFByTAndB.VType = @db.code_VType.Find(item.Key).VType;
    }
  }
  for (var i = 1; i <= 12; i++)
  {
    item.Columns.Add(item.Count(x => x.tblFAM.CDate.Month == i));
  }      

  return View(model);
}

然后,视图代码将如下所示:

@foreach (var item in Model.TotalNumberProxy.LstFByTAndB)
{
    <tr>
        <td>@item.VType</td>
        @for (var i = 1; i <= 12; i++)
        {
            <td>@item.Columns[i]</td>
        }
        <td>@item.Count()</td>
    </tr>
}

但是我可能会创建一个LstFByTAndB模板,因此我的View代码如下所示,因为DisplayFor如果是IEnumerable则会自动循环。

@Html.DisplayFor(m => m.TotalNumberProxy.LstFByTAndB)

具有以下模板:

    <tr>
        <td>@item.VType</td>
        @for (var i = 1; i <= 12; i++)
        {
            <td>@item.Columns[i]</td>
        }
        <td>@item.Count()</td>
    </tr>

答案 2 :(得分:0)

如何返回string,我的意思是

@(item.Count(x => x.tblFAM.CDate.Month == i).ToString())