LoadCollection

The LoadCollection method uses the LoadCollection method of an IDO to query either an IDO collection or a database table and return the results to the user.

Example 1 – Basic load collection

This example code retrieves the user ID, name, and description from the Users table.

Client client = new Client( requestServiceURL, IDOProtocol.Http );
LoadCollectionResponseData response = default( LoadCollectionResponseData );
 
using ( client )
{
   LoadCollectionRequestData request = new LoadCollectionRequestData()
   {
      IDOName = "UserNames",
      PropertyList = new PropertyList( "UserId, Username, UserDesc" ),
      RecordCap = -1
   };
   response = client.LoadCollection( request );
 
   // Property info can be enumerated as follows
   foreach ( IDOItem item in response.Items )
   {
      // Do something...
      foreach ( IDOPropertyValue property in item.PropertyValues )
      {
         Console.WriteLine( property.Value );
      }
   }
}

Example 2 – Custom load collection

This example code retrieves the note content and description from the Object Notes table using the custom load method GetNotesSp.

Client client = new Client( requestServiceURL, IDOProtocol.Http );
LoadCollectionResponseData response = default( LoadCollectionResponseData );
 
using ( client )
{
   InvokeParameterList clmParameters = new InvokeParameterList
   {
      "UserNames",
      "4d6cb1eb-e4fc-4e12-aae8-95ff1086ee8c"
   };
 
   CustomLoadMethod clm = new CustomLoadMethod
   {
      Name = "GetNotesSp",
      Parameters = clmParameters
   };
 
   LoadCollectionRequestData request = new LoadCollectionRequestData()
   {
      IDOName = "ObjectNotes",
      PropertyList = new PropertyList( "SpcnNoteContent, SpcnNoteDesc" ),
      RecordCap = -1,
      CustomLoadMethod = clm
   };
 
   response = client.LoadCollection( request );
 
   // Property info can be enumerated as follows
   foreach ( IDOItem item in response.Items )
   {
      // Do something...
      foreach ( IDOPropertyValue property in item.PropertyValues )
      {
         Console.WriteLine( property.Value );
      }
   }
}

Example 3 – Nested load collection

This example code is for a nested or hierarchical request. This request queries the Users table and the User Emails tables in a single request, to get the usernames and associated email addresses for each user.

Client client = new Client( requestServiceURL, IDOProtocol.Http );
LoadCollectionResponseData response = default( LoadCollectionResponseData );
 
using ( client )
{
   LoadCollectionRequestData emailsRequest = new LoadCollectionRequestData
   {
      IDOName = "UserEmails",
      PropertyList = new PropertyList( "EmailAddress, EmailType" ),
      RecordCap = -1
   };
   // Set the relationship data of the child and parent IDOs
   emailsRequest.SetLinkBy( "UserId", "UserId" );
 
   LoadCollectionRequestData usersRequest = new LoadCollectionRequestData
   {
      IDOName = "UserNames",
      PropertyList = new PropertyList( "UserId, Username, UserDesc" ),
      RecordCap = -1
   };
   // Nest the user emails LoadCollection request inside the user LoadCollection request
   usersRequest.AddNestedRequest( emailsRequest );
 
   response = client.LoadCollection( usersRequest );
 
   // Property info can be enumerated as follows
   foreach ( IDOItem item in response.Items )
   {
      // Do something...
      foreach ( IDOPropertyValue property in item.PropertyValues )
      {
         Console.WriteLine( property.Value );
      }
   }
}