()。 一个对象获取key的lambda表达式是(i => i.name)。另一方面,它是 (i => i.inner.n-6ren">
gpt4 book ai didi

c# - Lambda "if"语句?

转载 作者:可可西里 更新时间:2023-11-01 08:57:55 24 4
gpt4 key购买 nike

我有 2 个对象,我想将它们都转换为字典。我使用 toDictionary<>()。

一个对象获取key的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”。

非常感谢。

更新

当我说“不存在”时,我的意思是对象实际上没有属性,而不是属性只是空的。

最佳答案

如果这是两种不同的(引用)类型,那么您可以使用 is 测试它们或 as关键词:

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;
}

关于c# - Lambda "if"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com