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没有参数的构造函数重载.
你可以尝试这个:
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查询的类型返回.