LookupTable class

Represents a lookup table.

Inheritance hierarchy

System.Object
  Microsoft.SharePoint.Client.ClientObject
    Microsoft.ProjectServer.Client.LookupTable

Namespace:  Microsoft.ProjectServer.Client
Assembly:  Microsoft.ProjectServer.Client (in Microsoft.ProjectServer.Client.dll)

Syntax

'Declaration
<ScriptTypeAttribute("PS.LookupTable", ServerTypeId := "{1cd4d39f-f5e6-45ef-af45-434e8d94473a}")> _
Public Class LookupTable _
    Inherits ClientObject
'Usage
Dim instance As LookupTable
[ScriptTypeAttribute("PS.LookupTable", ServerTypeId = "{1cd4d39f-f5e6-45ef-af45-434e8d94473a}")]
public class LookupTable : ClientObject

Examples

The following code example is a console application that queries the collection of lookup tables in a Project Web App instance and displays information about the code masks and entries for a specified lookup table. The projLutCollection variable is a LookupTableCollection object.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.ProjectServer.Client;

namespace ReadLookupTable
{
    class Program
    {
        // Change the path for your Project Web App instance.
        private const string PWA_PATH = "https://ServerName/pwa/";    
        private static string lutName = "Department";    // Default lookup table to read.

        // Set the Project Server client context.
        private static ProjectContext projContext;

        static void Main(string[] args)
        {

            if (!ParseCommandLine(args))
            {
                Usage();
                ExitApp();
            }
            projContext = new ProjectContext(PWA_PATH);

            var projLutCollection = projContext.LoadQuery(
                projContext.LookupTables
                    .Where(lut => lut.Name == lutName));

            projContext.ExecuteQuery();

            if (projLutCollection.Count() > 0)
            {
                foreach (LookupTable lut in projLutCollection)
                {
                    Console.WriteLine("'{0}' lookup table Id: {1}", lut.Name, lut.Id);
                    Console.WriteLine("\tField type: {0}", lut.FieldType);

                    // Get the lookup table mask data:
                    Console.WriteLine("\nNumber of '{0}' lookup table masks: {1}\n", lut.Name, lut.Masks.Count());

                    foreach (LookupMask lutMask in lut.Masks)
                    {
                        Console.WriteLine("\tMaskType: {0}\tLength: {1}\tSeparator: {2}", 
                            lutMask.MaskType, lutMask.Length, lutMask.Separator);
                    }

                    // Get the collection of lookup table entries.
                    projContext.Load(lut.Entries);
                    projContext.ExecuteQuery();

                    Console.WriteLine("\nNumber of '{0}' lookup table entries: {1}", lut.Name, lut.Entries.Count());

                    foreach (LookupEntry lutEntry in lut.Entries)
                    {
                        Console.WriteLine("\n\t{0}, SortIndex: {1}\n\tFullValue: {2}",
                            lutEntry.Id, lutEntry.SortIndex.ToString("F0"), lutEntry.FullValue);
                    }
                }
            }
            else
            {
                Console.WriteLine("No lookup table named '{0}'", lutName);
            }

            ExitApp();   
        }

        private static void ExitApp()
        {
            Console.Write("\nPress any key to exit... ");
            Console.ReadKey(true);
            Environment.Exit(0);
        }

        // Parse the command line. Return true if there are no errors.
        private static bool ParseCommandLine(string[] args)
        {
            bool error = false;
            int argsLen = args.Length;

            try
            {
                for (int i = 0; i < argsLen; i++)
                {
                    if (error) break;
                    if (args[i].StartsWith("-") || args[i].StartsWith("/"))
                        args[i] = "*" + args[i].Substring(1).ToLower();

                    switch (args[i])
                    {
                        case "*lookuptable":
                        case "*lut":
                            if (++i >= argsLen) return false;
                            lutName = args[i];
                            break;
                        case "*?":
                        default:
                            error = true;
                            break;
                    }
                }
            }
            catch (FormatException)
            {
                error = true;
            }
            return !error;
        }

        private static void Usage()
        {
            string example = "Usage: ReadLookupTable [/lookuptable | /lut \"LookupTable Name\"";
            example += "\n\nExample: ReadLookupTable /lut \"Department\"";
            Console.WriteLine(example);
        }
    }
}

For example, suppose the Department lookup table contains the following code masks and lookup table values:

Sequence              Length          Separator
_______________________________________________
Characters            Any             .
Uppercase Letters     2               .

 

Level              Value
______________________________
1                  Test Dept 1
1                  Test Dept 2
1                  Test Dept C
2                      CA
2                      CB

Following is the output of the ReadLookupTable application (the GUIDs for your entries would be different).

Note

Because the Department lookup table is built-in, the GUID of the Department lookup table is the same in all Project Web App instances. The GUID is the value of the Microsoft.Office.Project.Server.Library.LookupTables.DEPARTMENTS_LT_UID field.

'Department' lookup table Id: e7397277-1ab0-4096-b2dd-57029a055ba4
        Field type: TEXT

Number of 'Department' lookup table masks: 2

        MaskType: CHARACTERS    Length: 0       Separator: .
        MaskType: UPPERCASE     Length: 2       Separator: .

Number of 'Department' lookup table entries: 5

        bbc07ff5-b06d-e211-93f4-0021704e28a0, SortIndex: 1
        FullValue: Test Dept 1

        bcc07ff5-b06d-e211-93f4-0021704e28a0, SortIndex: 2
        FullValue: Test Dept 2

        bdc07ff5-b06d-e211-93f4-0021704e28a0, SortIndex: 3
        FullValue: Test Dept C

        0a6ef8d8-6871-e211-93f4-0021704e28a0, SortIndex: 4
        FullValue: Test Dept C.CA

        0b6ef8d8-6871-e211-93f4-0021704e28a0, SortIndex: 5
        FullValue: Test Dept C.CB

Press any key to exit...

Thread safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See also

Reference

LookupTable members

Microsoft.ProjectServer.Client namespace