使用未赋值的局部变量 LinqToLdap



我想在我的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);
 }

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

var model = (from usr in users
            where usr.DisplayName.StartsWith(searchTerm)                     
            select usr).OrderBy(u => u.DisplayName).ToList();

错误非常明显,您必须在使用前提供默认值。

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();

而不是:

IEnumerable<UserModel> model;

试试这个:

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

或:

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

相关内容

  • 没有找到相关文章

最新更新