GetValue

public static T GetValue<T>(this SearchResult result, string key)
        {
            return result.GetValue(key, default(T));
        }

        public static T GetValue<T>(this SearchResult result, string key, T defaultValue)
        {
            if (!result.Properties.Contains(key))
            {
                return defaultValue;
            }

            var resultPropertyValueCollection = result.Properties[key];
            if (resultPropertyValueCollection.Count == 0)
            {
                return defaultValue;
                
            }

            return (T) resultPropertyValueCollection[0];
        }

        public static IEnumerable<T> GetEnumerable<T>(this SearchResult result, string key)
        {
            if (!result.Properties.Contains(key))
            {
                yield break;
            }

            var values = result.Properties[key];


            foreach (var value in values)
            {
                var valueCollection = value as T[];
                if (valueCollection != null)
                {
                    foreach (var innerValue in valueCollection)
                    {
                        yield return innerValue;
                    }
                    yield break;
                }
                yield return (T) value;
            }
        }

        public static SecurityIdentifier GetObjectSid(this SearchResult result)
        {
            if (result.Properties["objectSid"].Count > 0)
            {
                var binaryForm = (byte[])result.Properties["objectSid"][0];
                return new SecurityIdentifier(binaryForm, 0);
            }

            return null;
        }

        public static Guid? GetObjectGuid(this SearchResult result)
        {
            if (result.Properties["objectGuid"].Count == 1)
            {
                var b = (byte[])result.Properties["objectGuid"][0];
                return new Guid(b);
            }

            return null;
        }
Example:
result.GetValue("sAMAccountName", String.Empty)

Description

A bunch of extensions that work with SearchResult to retrieve its data.

Details

Double click on the code to select all.

 

;