I managed metatada sono uno strumento molto utile introdotto da SharePoint 2010 e notevolmente migliorato da SharePoint 2013. Di base ti permettono di salvare una lista di termini che può essere riutilizzata dovunque all'interno della farm, offrendo così un utilizzo consistente della terminologia di alcune tipologie di informazioni all'interno della vostra intranet.
SharePoint 2013 poi li utilizza anche per la navigation, la ricerca e altre funzionalità.
Se volete più informazioni sui Managed Metadata, potete far riferimento alla documentazione a questo indirizzo:
https://technet.microsoft.com/en-us/library/ee424402.aspx

Come per la stragrande maggior parte delle funzionalità di SharePoint, anche per i Managed Metadata avete un set di API da utilizzare per accedere al term store (la Managed Metadata service application che potete creare all'interno della vostra Central Administration) ed effettuare le operaizoni di lettura/scrittura sui termini che intendete gestire.

Questo il codice che potete utilizzare per leggere tutti i termini di un particolare term set creato all'interno di un particolare term group.

private TermCollection GetTerms(string groupName, string termSetName)
{
    TermCollection result = null;
    using (SPSite site = new SPSite("http://YOURSITEURL")
    {
        site.OpenWeb().RunElevated((elevatedWeb) =>
        {
           TaxonomySession session = new TaxonomySession(elevatedWeb.Site);
           TermStore termstore = session.DefaultKeywordsTermStore;
           Group group = termstore.Groups[groupName];
           TermSet termset = group.TermSets[termSetName];
           result = termset.Terms;
        });                
    }
    return result;
}

Per poter eseguire correttamente questo codice, dovete prima aggiungere la referenza alla libreria Microsoft.SharePoint.Taxonomy.dll che trovate all'interno della folder "ISAPI" del server in cui avete installato SharePoint.

Nota: nell'esempio ho utilizzato un extension method che fa parte della nostra libraria core di SharePoint e di cui abbiamo parlato in uno dei precedenti post, utile ad elevare il codice con permessi amministrativi. Questo serve per evitare che un utente che non ha permessi sulla Managed Metadata service application si trovi davanti ad un errore di accesso vietato.

Spero vi sia utile ;)