【问题标题】:How to Create an Empty SelectList如何创建一个空的 SelectList
【发布时间】:2014-07-16 10:49:00
【问题描述】:

我有以下操作方法:

public JsonResult LoadSitesByCustomerName(string customername)
{
    var customerlist = repository.GetSDOrg(customername)
                                 .OrderBy(a => a.NAME)
                                 .ToList();
    var CustomerData;
    CustomerData = customerlist.Select(m => new SelectListItem()
    {
        Text = m.NAME,
        Value = m.NAME.ToString(),
    });
    return Json(CustomerData, JsonRequestBehavior.AllowGet);
}

但目前我在var CustomerData; 上收到以下错误:

implicitly typed local variables must be initialized

所以我不确定如何创建一个空的 SelectList 以将其分配给 var 变量? 谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc linq


    【解决方案1】:

    使用它来创建一个空的SelectList

    new SelectList(Enumerable.Empty<SelectListItem>())
    

    Enumerable.Empty&lt;SelectListItem&gt;() 创建一个空序列,该序列将传递给SelectList 的构造函数。这是必要的,因为SelectList 没有没有参数的构造函数重载。

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      IEnumerable<SelectListItem> customerList = new List<SelectListItem>();
      

      你得到的错误是合理的,因为

      var 关键字指示编译器从初始化语句右侧的表达式中推断变量的类型。

      另一方面,您可以尝试以下方法:

      var customerList = customerlist.Select(m => new SelectListItem()
                         {
                             Text = m.NAME,
                             Value = m.NAME.ToString(),
                         });
      

      第二个赋值起作用的原因是编译器可以通过这种方式推断变量的类型,因为它知道 LINQ 查询返回的类型。

      【讨论】:

      • 如何创建接口的实例?
      • @Mardoxx 哎呀...我刚刚注意到它并更正了它。
      【解决方案3】:

      那个错误意味着你不能在不给出值的情况下声明var变量,例如:

      var double1 = 0.0; // Correct, compiler know what type double1 is.
      var double2; // Error, compiler not know what type double2 is.
      

      你需要给var CustomerData;赋值例如:

      var CustomerData = customerlist.Select(m => new SelectListItem()
                  {
                      Text = m.NAME,
                      Value = m.NAME.ToString(),
      
                  });
      

      【讨论】:

        【解决方案4】:

        试试这个:

        customerlist = new[] { new SelectListItem { } };
        

        【讨论】:

          【解决方案5】:

          在声明变量时初始化它:

          var CustomerData = customerlist.Select(m => new SelectListItem()
          {
              Text = m.NAME,
              Value = m.NAME.ToString(),
          });
          

          【讨论】:

            【解决方案6】:

            默认为空的列表项

            var area = new[] { new tbl_Area { AreaID = -1, AreaName = "Please Select Main Area" } };
            

            tbl_Area 可以是类或数据模型

             class tbl_Area{
                  public int AreaID {get;set;}
                  public string AreaName {get;set;}
             }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-23
              • 1970-01-01
              • 2022-11-11
              • 2020-04-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多