使用未分配的局部变量LinqToLdap

时间:2016-02-03 08:33:01

标签: c# asp.net-mvc active-directory linq-to-ldap

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

Visual Studio一直说我是

  

“使用未分配的局部变量'model'”。

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

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

3 个答案:

答案 0 :(得分:3)

您只是声明了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();

答案 1 :(得分: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();

答案 2 :(得分:0)

而不是:

IEnumerable<UserModel> model;

试试这个:

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

或:

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