0

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

検索機能は予定通り使えます。私は何が欠けていますか?

4

0 に答える 0