2

我想在我的 MVC 中获取用户列表。

Visual Studio 一直说我是

“使用未分配的局部变量‘模型’”。

我尝试了不同的方法,但无法修复错误。谁能告诉我我做错了什么?

 public ActionResult Search(string searchTerm)       
 {
        var users = new DirectorySource<UserModel>(ROOT,SearchScope.Subtree);

        IEnumerable<UserModel> model;

        var res = from usr in users
                  where usr.DisplayName.StartsWith(searchTerm)                     
                  select usr.DisplayName;

        foreach (var result in res)
        {
            model.OrderBy(p => p.DisplayName).ToList();
        }

        if (Request.IsAjaxRequest())
        {
            return PartialView("_search", model);
        }

        return View(model);
 }
4

3 回答 3

3

你只是声明你的model,而不是实例化它。您应该在尝试对其调用方法之前对其进行实例化(例如OrderBy)。其次,您不应该OrderBy在 for 循环内部执行,只执行一次就足够了。您可能希望model使用 Linq 查询的结果实例化select usr,最后,而不是显示名称。

var model = (from usr in users
            where usr.DisplayName.StartsWith(searchTerm)                     
            select usr).OrderBy(u => u.DisplayName).ToList();
于 2016-02-03T08:43:39.960 回答
1

错误很清楚,你必须在使用前提供默认值。

IEnumerable<UserModel> model = new List<UserModel>();

或者

IEnumerable<UserModel> model = null;

那是为了消除您的错误,但是您可以使用以下语句简化代码。

IEnumerable<UserModel> model =  users.Where(usr=>usr.DisplayName.StartsWith(searchTerm))
                                      .OrderBy(usr=>usr.DisplayName).ToList();
于 2016-02-03T08:42:50.070 回答
0

代替:

IEnumerable<UserModel> model;

试试这个:

List<UserModel> model = new List<UserModel>();

或者:

IEnumerable<UserModel> model = new List<UserModel>();
于 2016-02-03T08:41:37.020 回答