C# Lambda 表达式映射多个条件

标签 c# lambda

我正在使用企业库。我想将列(整数类型)映射到枚举类型。

Enum BloodGroup Type
{

  OPositive,
  ONegative,
  ABPositive,
  ABNegative,  
  BPositive,
  BNegative,
  NotSet 
} 

我正在将数据库表的列映射到 C# 类型的(员工类)属性。

IRowMapper<Employee> addressMapper = MapBuilder<Employee>
                .MapAllProperties()   // map all properties
                .Map(p=>p.BloodGroup)  // override BloodGroup property
                .WithFunc(rec => rec.IsDBNull(rec.GetOrdinal("BloodGroup"))
                ? BloodGroup.NotSet
                : BloodGroup.OPositive)
                .Build();

代码工作正常,但我想在 WithFun 扩展方法中映射枚举的多个条件。我的意思是类似

.WithFun(rec=> rec.IsDBNull(rec.GetOrdinal("BloodGroup")) ?   BloodGroup.NotSet
               rec.GetOrdinal("BloodGroup")==1 ?BloodGroup.OPositive
               rec.GetOrdinal("BloodGroup")==2 ?BloodGroup.ONegative
         )

帮我查多个条件?

最佳答案

rec.IsDBNull(rec.GetOrdinal("BloodGroup")) ? BloodGroup.NotSet :
rec.GetOrdinal("BloodGroup")==1 ? BloodGroup.OPositive :
rec.GetOrdinal("BloodGroup")==2 ? BloodGroup.ONegative :
BloodGroup.NotSet

您需要添加的只是一些冒号和最后一个 else 表达式。参见 ternary operator .

关于C# Lambda 表达式映射多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991616/

相关文章:

c# - Microsoft 不保证 Random 类的实现在 .NET 的各个版本中保持不变的原因是什么?

java - 在 Lambda 表达式上调用方法

c++ - 将模板 lambda 转换为 `void *` 是否安全?

c# - 当从其他机器监听数据时,请求的地址在其上下文中无效

c# - OR 正则表达式中的表达式?

c# - 在 javascript/jquery 中创建动态 TreeView ?

c# - 404 for web.api cors 选项

node.js - AWS Lambda 因 NodeJS 依赖项而失败

c# - 如何根据约定创建返回受限属性集的表达式树?

java - 为泛型类的泛型方法的属性赋值 - Java