Obtendo um tipo de dados 'básico' em vez de um anulável estranho, via reflexo em c #

Minha necessidade básica é obter os tipos de dados de um tipo anônimo gerado a partir de uma consulta LINQ to SQL.

Eu tenho um pedaço de código (mais inteligente do que eu poderia escrever, pois eu realmente não mergulhei na reflexão) que retorna os tipos de dados de um tipo anônimo e funciona perfeitamente para os elementos marcados como 'não anuláveis' nas propriedades linq2sql. Então, se eu tiver uma string, ela retornará como System.String. No entanto, quando o elemento é anulável, acabo com o 'nome completo':

{Name = "Anulável1" FullName = "System.Nullable1 [[System.Decimal, mscorlib, versão = 4.0.0.0, Cultura = neutra, PublicKeyToken = b77a5c561934e089]] "}

Tudo o que eu quero extrair é o tipo System.Decimal nesse caso (e nos casos de seqüências de caracteres ou qualquer outra coisa, eu gostaria apenas de System.String). Examinei as propriedades e não consigo encontrar nada que pareça armazenar isso.

    private static Dictionary<string, Type> GetFieldsForType<T>(IEnumerable<T> data)
    {
        object o = data.First();

        var properties = o.GetType().GetProperties();

        return properties.ToDictionary(property => property.Name, property => property.PropertyType);
    }

A consulta LINQ (que eu acho que realmente não importa aqui):

var theData = from r in db.tblTestEdits select new { myitem = r.textField, mydecimal = r.decimalField }; 

Encontrei este link que parece tentar resolver uma coisa semelhante.
http://ysgitdiary.blogspot.com/2010/02/blog-post.html

Embora pareça retornar uma "string" do que o tipo é, e não do tipo real, que é o que eu preciso. Não sei como converter uma coisa dessas.

Muito obrigado a todos.