Share via

LookupEntryCollection class

Represents a collection of LookupEntry objects for a lookup table.

Inheritance hierarchy


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


<ScriptTypeAttribute("PS.LookupEntryCollection", ServerTypeId := "{55ea707e-5da5-4a2a-a30a-cbb44541ee69}")> _
Public Class LookupEntryCollection _
    Inherits ClientObjectCollection(Of LookupEntry)
Dim instance As LookupEntryCollection
[ScriptTypeAttribute("PS.LookupEntryCollection", ServerTypeId = "{55ea707e-5da5-4a2a-a30a-cbb44541ee69}")]
public class LookupEntryCollection : ClientObjectCollection<LookupEntry>


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 lut.Entries property is a LookupEntryCollection 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))
            projContext = new ProjectContext(PWA_PATH);

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


            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.

                    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);
                Console.WriteLine("No lookup table named '{0}'", lutName);


        private static void ExitApp()
            Console.Write("\nPress any key to exit... ");

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

                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];
                        case "*?":
                            error = true;
            catch (FormatException)
                error = true;
            return !error;

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

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


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


LookupEntryCollection members

Microsoft.ProjectServer.Client namespace