c# - 如何根据条件将数据绑定(bind)到 DTO 属性?

标签 c# entity-framework linq

我正在尝试将数据绑定(bind)到在我的 DTO(数据传输对象)中定义的名为 CurrentControlled 的变量,问题是我想根据数据是什么分配一个字符串从数据库返回。在这种情况下,如果 ActionCompleteDate 中的数据具有日期值,我的数据库中有一个名为 RiskActions 的表,其中有一列名为 ActionCompleteDate在其中,分配给 CurrentControlled 的字符串应该是“当前”,而如果 ActionCompleteDate 中没有日期,则 CurrentControlled 的值应该受到控制。

我曾尝试为 CurrentControlled 分配条件,但出于某种原因,编译器给我一个错误。

var actions = dataContext.RiskInstances.Where(riskInstancePredicate.Compile());
actions = actions
    .OrderBy(a => a.RiskInstanceID2)
    .ThenBy(a=> a.Issue.Question);

List<RiskDTO> results = actions
    .Select(ra => new RiskDTO
    {
        CurrentControlled = if(ra.RiskActions.Where(m => m.ActionCompleteDate == null)) {
            TerminologyFactor.Parse("{Current}",TerminologyFactor.RMMonitor)
        }
        else {
            TerminologyFactor.Parse("{Controlled}",TerminologyFactor.RMMonitor)
        }
    }) 

最佳答案

您需要使用 conditional operator .另外,这是一个猜测,因为我在这里不知道你的数据结构,但你可能需要使用 Any 而不是 Where 因为它返回一个 bool 值,你可以用作条件:

List<RiskDTO> results = actions
    .Select(ra => new RiskDTO
    {
        CurrentControlled = ra.RiskActions.Any(m => m.ActionCompleteDate == null))
            ? TerminologyFactor.Parse("{Current}",TerminologyFactor.RMMonitor)
            : TerminologyFactor.Parse("{Controlled}",TerminologyFactor.RMMonitor)
    }

关于c# - 如何根据条件将数据绑定(bind)到 DTO 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54317763/

相关文章:

c# - Linq where子句查找错误实体的属性

c# - 林克 : select value in a datatable column

linq - 无效的 CRM 2011 LINQ 查询 : "Invalid ' where' condition. 实体成员正在调用无效的属性或方法。”

c# - 需要一种方法来随机选择两个位掩码中的公共(public)位

c# - 查找电话号码 - 查找带和不带电话分机的号码

c# - 为什么 GC.AddMemoryPressure 会死锁/挂起?

C# UWP - HttpClient 响应问题\u001...无法反序列化

c# - EF 查询持续缓慢

c# - 在 Entity Framework 查询中使用带有标志的枚举

c# - 在 MVC3 中捕获模型的旧值?