我的基本需求是从 LINQ to SQL 查询生成的匿名类型中获取数据类型。
我有一段代码(比我能写的更聪明,因为我还没有真正深入研究反射),它从匿名类型返回数据类型,并且非常适合 linq2sql 属性中标记为“不可为空”的元素。因此,如果我有一个字符串,它将作为 System.String 返回。但是,当元素可为空时,我最终得到它的“全名”:
{名称=“可为空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
尽管它似乎返回类型的“字符串”而不是实际类型,但这正是我所需要的。不知道如何转换这样的东西。
非常感谢大家。