public void Virtual_List_View_Test() { int skip = 0; int take = 1000; var results = _context.Query <IntegrationUserTest>(SearchScope.Subtree, IntegrationUserTest.NamingContext2) .Where(x => Filter.StartsWith(x, "givenName", "T", true)) .OrderByDescending(x => x.Cn) .Skip(skip) .Take(1000) .ToList(); results.Should().Not.Be.Empty().And.Have.Count.EqualTo(1000); results.As <IVirtualListView <IntegrationUserTest> >().Should().Not.Be.Null(); results.As <IVirtualListView <IntegrationUserTest> >().ContextId .Should().Not.Be.Null(); results.As <IVirtualListView <IntegrationUserTest> >().TargetPosition .Should().Be.GreaterThanOrEqualTo(0); string[] attribs = { "cn", "sn", "givenName" }; SearchRequest searchRequest = new SearchRequest (IntegrationUserTest.NamingContext2, "(givenName=T*)", SearchScope.Subtree, attribs); SortRequestControl sortRequest = new SortRequestControl("cn", true); searchRequest.Controls.Add(sortRequest); VlvRequestControl vlvRequest = new VlvRequestControl(0, take - 1, skip + 1); // add the vlv request to the searchRequest object searchRequest.Controls.Add(vlvRequest); SearchResponse searchResponse = (SearchResponse)_context.SendRequest(searchRequest); searchResponse.Should().Not.Be.Null(); searchResponse.Entries.Count.Should().Be.GreaterThan(0); results.As <IVirtualListView <IntegrationUserTest> >().ContentCount .Should().Be.EqualTo(searchResponse.Controls[1].As <VlvResponseControl>().ContentCount); results.Select(x => x.DistinguishedName) .OrderBy(x => x) .Should() .Have.SameSequenceAs( searchResponse.Entries.Cast <SearchResultEntry>().Select(x => x.DistinguishedName).OrderBy(x => x)); }