我正在使用反射的C#GetProperty
方法。
obj.GetType()。的getProperty( “COLUMNNAME”)
但是我不能保证列名的确切外壳,因为它来自外部源。它可能是ColumnName
或columnname
我在想是否可以强制将字符串列名强制为大写,但是如何处理对象本身的属性呢? getProperty方法看起来需要是精确的套管吗?
答案 0 :(得分:7)
您可以使用
var prop = GetProperty("columnname",
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.IgnoreCase);
请注意,您仍然需要Instance
和Public
位(假设此 是公共实例属性),否则它将找不到任何内容。< / p>
答案 1 :(得分:6)
查找属性时可以忽略这种情况。
GetProperty(fieldname, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
答案 2 :(得分:1)
尝试:
var yourprop = from x in obj.GetType().GetProperties()
where x.Name.ToUpper() == "a column name".ToUpper()
select x;
答案 3 :(得分:1)
你总是可以将反射与一些Linq魔法相结合,如下所示:
var property = typeof (MyType).GetProperties()
.Where(p => p.Name.Equals("MyProperty", StringComparison.InvariantCultureIgnoreCase));