Lambda“if”语句?

2024-03-20

我有 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(使用前将#替换为@)

Lambda“if”语句? 的相关文章

  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 对话框中按钮的自定义放置 - jquery ui

    我想将添加到对话框的按钮移动到顶部或左侧 我正在使用 jquery ui 如何做到这一点 添加 ok 后 它会显示在最右端 可以将其放置在周围吗 function dialog message dialog modal true resiz
  • 使 Flexbox 上下颠倒换行

    今天 我正在查看我构建的 选项卡 HTML gizmo 我注意到由于我使用 inline block 来布局选项卡标题 当它们包装时 我会得到如下所示的输出 Apple Banana Cherry Date Elderberry Fig G
  • 使用 Gulp 将 browserify 模块设为外部

    我有一个图书馆lib js我想从中创建lib a js and lib b js并能够从脚本中使用它client js using var a require lib a js 当我只包含已编译的内容时它就可以工作lib js之前的图书馆c
  • 在 Google Apps 脚本中比较日期范围与今天的日期

    我希望使用这篇文章作为参考 将从电子表格中提取的日期与今天的日期进行比较 如何使用 Google Apps 脚本将日期与电子表格进行比较 https stackoverflow com questions 14350671 how do i
  • 访问派生类中的基类成员

    我有一个简单的课程如下 class A protected int x class B public A public int y void sety int d y d int gety return y int main B obj o
  • JetBrains Toolbox 应用程序在 Windows 上为空白

    我在 Windows 10 上安装了 JetBrains Toolbox 应用程序 但是当我启动它时 它只显示一个空白边框 如下所示 我尝试重新安装它但仍然不起作用 有人知道如何解决这个问题吗 看起来类似于ALL 1419 https yo
  • 那么如何通过终端打开Android SDK Manager呢? [复制]

    这个问题在这里已经有答案了 我已经将 CD 放入终端中的 android 工具目录中 我尝试输入 android 并按回车键 我也尝试输入 android sdk 并按回车键 但 sdk 管理器不会出现 有什么解决方案或建议可以帮助我了解我
  • HTML5 Canvas 形状从圆形到三角形

    我一直在环顾四周 似乎找不到一种清晰的方法来使形状从圆形变为三角形或矩形或相反 我假设我可以以某种方式存储形状并更改其属性以转换它 基本上我要问的是 如何绘制一个圆形 然后单击按钮将其动画化为三角形 画布形状可以吗 Thanks 您可以使用
  • “启动失败。未找到二进制文件。” Snow Leopard 和 Eclipse C/C++ IDE 问题

    不是问题 我刚刚在互联网上搜索了这个问题的解决方案 并认为我会与 SO 的好人分享 我会用通俗易懂的语言来表述 以便新手也能理解 如果这是错误的地方 我们深表歉意 只是想提供帮助 几乎所有尝试使用 Eclipse C C IDE 的 OS
  • 扩展现有协议以符合另一个协议

    你好 我的目标是扩展 在 swift 3 中 我在框架中拥有的协议 以符合另一个协议 protocol SomeProtocol protocol SomeOtherProtocol extension SomeOtherProtocol
  • R:绘制 igraph 时选择性显示节点

    如何绘制 igraph 节点的选择 我有一个现有的图表 但它太复杂了 我希望能够 放大 节点的子集 我能够删除边缘的子集 但我不知道如何 关闭 孤立的节点 当使用network包 该displayisolates FALSE参数执行此操作
  • Typescript 类可以实现可调用接口吗?

    Typescript 接口允许定义函数风格的调用签名 因此 interface A x number number 这可以通过例如一个函数 const a A function x number number return 1 是否可以使用
  • 如何以编程方式绑定 DataTemplate 内控件的(依赖项)属性?

    The TextBlock居住在一个DataTemplate 因此我无法通过其名称来引用它 那么我该如何绑定它 例如 Text以编程方式属性 XAML
  • Java 组件(JRE、JDK、JVM、JIT 和 javac)之间有什么区别?

    我很难理解两者之间的区别JVM Java虚拟机 JRE Java运行时环境 JDK Java 开发工具包 JIT 即时编译器 以及javac Java 编译器 所有这些之间的良好比较和对比是什么 您可能已经在 google 上搜索了很多次来
  • LINQ to SQL - 一对一关联的问题

    在 L2S 设计器中 我删除了一个表和一个视图 我尝试在两者的主键上添加关联 这应该是一对一的关系 所以我这样设置关联的基数属性 但是 在编码时我无法访问子属性 有什么建议么 Edit I just created a view in sq
  • 如何在 MySQL *Prepared* 存储过程中使用多个参数

    尽管有一些在 MySQL 存储过程中使用多个参数的很好的示例 但我一直无法找到一个简单的示例来说明如何在存储过程中使用它们prepared 下面的代码返回 Incorrect arguments to EXECUTE 使用以下方式调用它时
  • 我如何知道谁调用了 System.gc()?

    在正在运行的系统中 我们会看到很多 Full GC System 这表明有人触发了 System gc 有没有办法找出代码中发生这种情况的位置 我确实搜索了所有可用的源 但没有发现任何可疑的东西 因此它一定在某个地方 可能是在同一容器或容器
  • django隐藏所有表单错误

    有没有办法向用户隐藏所有表单错误消息 我显示自己的消息 而错误消息显示在表单字段之间的事实对我来说没有用 您可以自己渲染模板 并忽略错误 请参阅文档自定义表单模板 https docs djangoproject com en dev to
  • PySpark NoSuchMethodError:将数据插入数据库时​​sun.nio.ch.DirectBuffer.cleaner

    我在尝试将大型数据帧插入 Postgres 时收到此错误 NoSuchMethodError sun nio ch DirectBuffer cleaner 这是一个完整的错误 之前有很多操作 所以没有理由将它们附加到问题中 您能否给一些建
  • Lambda“if”语句?

    我有 2 个对象 我想将它们转换为字典 我使用 toDictionary 一个对象获取密钥的 lambda 表达式是 i gt i name 对于另一个 它是 i gt i inner name 在第二个中 i name 不存在 如果 i