linq to ldap
アクティブな Active Directory ユーザーのリストを生成するために使用しています。この場合、私が行ったことは、役に立たないユーザー (デバイスと一般的なユーザー) をリストから除外することです。ただし、それを行うと、検索/フィルターが結果を返さなくなります。これが私のコードです:
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int?page)
{
int pageSize = 20;
int pageNumber = (page ?? 1);
var user = context.Query<ADUser>().ToList().Where
(u => u.FirstName != null
&& u.LastName != null
&& !u.DistinguishedName.Contains("ADGROUP1")
&& !u.DistinguishedName.Contains("ADGROUP2"));
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
if (!String.IsNullOrEmpty(searchString))
{
user = user.Where(y => y.FirstName.Equals(searchString)
|| y.FirstName.Contains(searchString)
|| y.LastName.Equals(searchString)
|| y.LastName.Contains(searchString))
.OrderBy(e => e.FirstName);
}
switch (sortOrder)
{
case "FirstName_desc":
user = user.OrderByDescending(e => e.FirstName);
break;
default:
user = user.OrderBy(e => e.FirstName);
break;
}
return View(user.ToPagedList(pageNumber,pageSize));
}
理解できないのは、上記のコードに次の変更を加えたときです。
変化する
var user = context.Query<ADUser>().ToList().Where
に
var user = context.Query<ADUser>().Where
//and remove the following code
&& !u.DistinguishedName.Contains("ADGROUP1")
&& !u.DistinguishedName.Contains("ADGROUP2"));
//finally add the following
return View(user.ToList().ToPagedList(pageNumber,pageSize));
検索機能は予定通り使えます。私は何が欠けていますか?