Introduction

In SharePoint List, you can create a column as a Lookup datatype that holds items from another list on the same site. 
The Lookup columns (SPFieldLookup) can have multiple values or just single value based on the AllowMultipleValues property. 
During creating a new Lookup column, If the AllowMultipleValues is checked, the column is multiple values; else, it's a single value.

In case, the lookup column is a single value, the field value is an object of type SPFieldLookupValue with
  • 32-bit integer ID (LookupId) of the item in the list that the lookup field points to. 
  • A string value (LookupValue) of the field in the item that the lookup field points to. 
In case, the lookup column allows multiple values, then the field value is an object of type SPFieldLookupValueCollection that is a collection of SPFieldLookupValue object.

In this article, we will explain How to use Server Side Object Model (C#) to do the following:
  • Set a SharePoint Lookup Field (Single Value).
  • Set a SharePoint Lookup Field (Multiple Values).
  • Get a SharePoint SharePoint Lookup Field (Single Value).
  • Get a SharePoint SharePoint Lookup Field (Multiple Values).


Set SPLookup Field (Single Value) Using SSOM C#


The below code shows How to set a SPLookup field (Single Value) in a SharePoint List new item.


using (SPSite site = SPContext.Current.Site)
        {
            using (SPWeb web = site.OpenWeb())
                 {
                    // Allow Unsafe Updates to prevent the cross site scripting
                    web.AllowUnsafeUpdates = true;
                    // Get The SPList
                    SPList list = web.Lists["List Name"];
                    // Add a new list item
                    SPListItem item = list.Items.Add();
                    // Set the default Title field
                    item["Title"] = "String Value";
                    //Set the Lookup Field - Single Value
                    item["The Lookup Field Name"] = new SPFieldLookupValue("A 32-bit integer that specifies the ID of the lookup field", "A string that contains the value of the lookup field");
                    // Submit your Item
                    item.Update();
                    web.AllowUnsafeUpdates = false;
                 }
                     
        }

Set SPLookup Field (Multiple Values) Using SSOM C#


The below code shows How to set a SPLookup field (Multiple Values) in a SharePoint List new item.


   using (SPSite site = SPContext.Current.Site)
       {
           using (SPWeb web = site.OpenWeb())
                {
                   // Allow Unsafe Updates to prevent the cross site scripting
                   web.AllowUnsafeUpdates = true;
                   // Get The SPList
                   SPList list = web.Lists["List Name"];
                   // Add a new list item
                   SPListItem item = list.Items.Add();
                   // Set the default Title field
                   item["Title"] = "string value";
                   //Set Lookup Field - Multiple Values
                       SPFieldLookupValueCollection itemValues = new SPFieldLookupValueCollection();
                       foreach (ListItem litem in your collection)
                       {
                           itemValues.Add(new SPFieldLookupValue("A 32-bit integer that specifies the ID of the lookup field", "A string that contains the value of the lookup field"));
                       }
                       item["The Lookup Field Name"] = itemValues;
                    
                   // Submit your Item
                   item.Update();
                   web.AllowUnsafeUpdates = false;
                }         
       }

Get SPLookup Field (Single Value) Using SSOM C#


The below code show How to get a SPLookup field (Single Values) based on an existing item in a SharePoint List.


   using (SPSite site = SPContext.Current.Site)
       {
           using (SPWeb web = site.OpenWeb())
                {
                   // Get The SPList
                   SPList list = web.Lists["List Name"];
                   // Get a list item By ItemID
                   SPListItem item = list.GetItemById("A 32-bit integer that specifies the ID of List Item");
                   //Get Lookup Field - Single Value
                   SPFieldLookupValue SingleValue = new SPFieldLookupValue(item["The Lookup Field Name"].ToString());
                   int SPLookupID = SingleValue.LookupId;
                   string SPLookupValue = SingleValue.LookupValue;
                }         
       }

Get SPLookup Field (Multiple Values) Using SSOM C#


The below code shows How to get a SPLookup field (Multiple Values) in a dropdown list based on an existing item in a SharePoint List.


   using (SPSite site = SPContext.Current.Site)
        {
            using (SPWeb web = site.OpenWeb())
                 {
                    // Get The SPList
                    SPList list = web.Lists["LookupField"];
                    // Get a list item By ItemID
                    SPListItem item = list.GetItemById("A 32-bit integer that specifies the ID of List Item");
                    //Get Lookup Field - Multiple Values
                    SPFieldLookupValueCollection MultipleValues = item["The Lookup Field Name"] as SPFieldLookupValueCollection;
                    foreach (SPFieldLookupValue itemValue in MultipleValues)
                        {
                            ListItem litem = new ListItem();
                            litem.Text = itemValue.LookupValue;
                            litem.Value = itemValue.LookupId.ToString();
                            dropdownlist.Items.Add(litem);
                        }
                 }         
        }

Download

You can download the full solution from TechNet gallery at SharePoint Lookup Field Operations via SSOM C#

Conclusion

In this article, we have explained How to use Server Side Object Model - C# to do the following:
  • Set a SharePoint Lookup Field (Single Value).
  • Set a SharePoint Lookup Field (Multiple Values).
  • Get a SharePoint SharePoint Lookup Field (Single Value).
  • Get a SharePoint SharePoint Lookup Field (Multiple Values).

Back To Top