我的目标是让用户根据某些条件(名字,姓氏,ID)搜索现有用户的广告,并显示匹配的项目。
我正在使用PrincipalSearcher来完成此操作:
控制器:
public ViewResult Index(string fname, string lname, int id)
{
UserPrincipal user = new UserPrincipal(pcontext);
user.GivenName = fname;
user.Surname = lname;
user.EmployeeId = id.ToString();
PrincipalSearcher ps = new PrincipalSearcher();
ps.QueryFilter = user;
PrincipalSearchResult<Principal> results = ps.FindAll();
List<Principal> userResults = new List<Principal>();
foreach (Principal item in results)
{
userResults.Add(item);
}
var viewModel = new UserSearchViewModel
{
Users = userResults.ToList()
};
return View(viewModel);
}
最后,我将结果传递给我创建的视图模型,并将其绑定到列表模型。
ViewModel:
public class UserSearchViewModel
{
public Request Request { get; set; }
public List<UserSearch> Users { get; set; }
public int id { get; set; }
public string fname { get; set; }
public string lname { get; set; }
}
我收到的当前错误消息如下: 无法将类型'System.Collections.Generic.List'隐式转换为'System.Collections.Generic.List'
我尝试将userResults更改为List类型,但错误仍然存在。我尝试只返回结果,但后来又想不通如何提交用户结果,然后在视图中显示结果。
对于实现我的目标的任何帮助或指导,将不胜感激。
编辑:模型
public class UserSearch
{
public int employeeId { get; set; }
public string firstname { get; set; }
public string lastname { get; set; }
}
答案 0 :(得分:0)
您需要将用户结果投影到您的UserSearch
模型中:
var viewModel = new UserSearchViewModel
{
Users = ps.FindAll().Cast<UserPrincipal>() // You could use also .OfType<UserPrincipal>
.Select(p=>new UserSearch{employeeid=p.EmployeeId,
firstname=p.GivenName,
lastname=p.SurName})
.ToList()
};
在此post的帮助下。 Principal
没有名字和姓氏,这就是我进行强制转换的原因