我有 2 个对象,我想将它们转换为字典。我使用 toDictionary()。
一个对象获取密钥的 lambda 表达式是 (i => i.name)。对于另一个,它是(i => i.inner.name)。在第二个中,i.name 不存在。如果 i.name 不存在,则 i.inner.name 始终存在。
是否可以使用 lambda 表达式来组合这两者?基本上可以读作:
“如果 i.name 存在,则将 id 设置为 i.name,否则将 id 设置为 i.inner.name”。
非常感谢。
Update
当我说“不存在”时,我的意思是对象实际上不具有属性,而不是属性只是空。
如果这是两种不同的(参考)类型,那么您可以使用is http://msdn.microsoft.com/en-us/library/scekt9xw.aspx or as http://msdn.microsoft.com/en-us/library/cscsdfbt.aspx关键词:
i => {
var x = i as TypeThatHasNameProperty;
return (x != null) ? x.name : i.inner.name;
}
如果您无法测试特定类型,那么您可以使用反射来测试name
财产本身:
i => {
var pi = i.GetType().GetProperty("name");
return (pi != null) ? pi.GetValue(i, null) : i.inner.name;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)