如何创建一个空的SelectList

joh*_* Gu 9 c# linq asp.net asp.net-mvc

我有folloiwng动作方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

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

implicitly typed local variables must be initialized
Run Code Online (Sandbox Code Playgroud)

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

Lap*_*mir 18

用它来创建一个空的SelectList:

new SelectList(Enumerable.Empty<SelectListItem>())
Run Code Online (Sandbox Code Playgroud)

Enumerable.Empty<SelectListItem>()创建一个空序列,将传递给它的构造函数SelectList.这是必要的,因为SelectList没有参数的构造函数重载.


Chr*_*tos 7

你可以尝试这个:

IEnumerable<SelectListItem> customerList = new List<SelectListItem>();
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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