Моя основная задача - получить типы данных от анонимного типа, сгенерированного из запроса LINQ to SQL.
У меня есть фрагмент кода (более умный, чем я мог бы написать, поскольку я действительно не углубился в рефлексию), который возвращает типы данных от анонимных типов и отлично работает для элементов, помеченных как 'не допускающие значения null' в свойствах linq2sql , Итак, если у меня есть строка, она вернется как System.String. Однако, когда элемент обнуляется, я получаю «полное имя»:
{Name = "Nullable 1" FullName = "System.Nullable
1 [[System.Decimal, mscorlib, Версия = 4.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089]]"}
Все, что я хочу извлечь, это тип System.Decimal в таком случае (и в случае строк или чего-либо еще, я бы просто хотел System.String). Я просмотрел свойства и не могу найти ничего, что могло бы хранить это.
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);
}
Запрос LINQ (который, я думаю, здесь не имеет значения):
var theData = from r in db.tblTestEdits select new { myitem = r.textField, mydecimal = r.decimalField };
Я нашел эту ссылку, которая, кажется, пытается обратиться к аналогичной вещи.
http://ysgitdiary.blogspot.com/2010/02/blog-post.html
Хотя кажется, что она возвращает «строку» того, что является типом, а не фактическим типом, что мне и нужно. Не уверен, как конвертировать такую вещь.
Большое спасибо всем.