2016-02-03 5 views
2

Я хочу получить список пользователей в моем MVC.Использование неназначенной локальной переменной LinqToLdap

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

ответ

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

Вместо:

IEnumerable<UserModel> model; 

попробовать это:

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

или:

IEnumerable<UserModel> model = new List<UserModel>(); 
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();