C# 未分配局部变量LinqToLdap的使用

C# 未分配局部变量LinqToLdap的使用,c#,asp.net-mvc,active-directory,linq-to-ldap,C#,Asp.net Mvc,Active Directory,Linq To Ldap,我想获取MVC中的用户列表 VisualStudio一直说我 “使用未分配的局部变量‘model’” 我尝试过不同的方法,但无法修复错误。谁能告诉我哪里做错了 public ActionResult Search(string searchTerm) { var users = new DirectorySource<UserModel>(ROOT,SearchScope.Subtree); IEnumerable<UserM

我想获取MVC中的用户列表

VisualStudio一直说我

“使用未分配的局部变量‘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);
 }
公共操作结果搜索(字符串搜索术语)
{
var users=newdirectorySource(根,SearchScope.Subtree);
可数模型;
var res=来自用户中的usr
其中usr.DisplayName.StartsWith(搜索术语)
选择usr.DisplayName;
foreach(以res表示的var结果)
{
model.OrderBy(p=>p.DisplayName).ToList();
}
if(Request.IsAjaxRequest())
{
返回PartialView(“搜索”,模型);
}
返回视图(模型);
}
而不是:

IEnumerable<UserModel> model;
IEnumerable模型;
试试这个:

List<UserModel> model = new List<UserModel>();
列表模型=新列表();
或:

IEnumerable model=new List();

错误很明显,使用前必须提供默认值

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

IEnumerable模型=null;
这是为了消除错误,但您可以使用下面的语句简化代码

IEnumerable<UserModel> model =  users.Where(usr=>usr.DisplayName.StartsWith(searchTerm))
                                      .OrderBy(usr=>usr.DisplayName).ToList();
IEnumerable model=users.Where(usr=>usr.DisplayName.StartsWith(searchTerm))
.OrderBy(usr=>usr.DisplayName).ToList();

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

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