C# 如何根据条件将数据绑定到DTO属性?

C# 如何根据条件将数据绑定到DTO属性?,c#,entity-framework,linq,C#,Entity Framework,Linq,我试图将数据绑定到DTO(数据传输对象)中定义的名为CurrentControlled的变量,问题是我想根据从数据库返回的数据分配一个字符串。在这种情况下,我的数据库中有一个名为RiskActions的表,该表有一列名为ActionCompleteDate,如果ActionCompleteDate中的数据包含日期值,则分配给CurrentControlled的字符串应为“Current”,而如果ActionCompleteDate中没有日期,则应控制CurrentControlled的值 我尝试

我试图将数据绑定到DTO(数据传输对象)中定义的名为
CurrentControlled
的变量,问题是我想根据从数据库返回的数据分配一个字符串。在这种情况下,我的数据库中有一个名为
RiskActions
的表,该表有一列名为
ActionCompleteDate
,如果
ActionCompleteDate
中的数据包含日期值,则分配给
CurrentControlled
的字符串应为“Current”,而如果
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)
        }
    }) 
var actions=dataContext.RiskInstances.Where(riskInstancePredicate.Compile());
动作=动作
.OrderBy(a=>a.RiskInstanceID2)
.ThenBy(a=>a.Issue.Question);
列出结果=行动
.选择(ra=>new RiskDTO
{
CurrentControlled=if(ra.RiskActions.Where(m=>m.ActionCompleteDate==null)){
解析(“{Current}”,TerminologyFactor.RMMonitor)
}
否则{
解析(“{Controlled}”,TerminologyFactor.RMMonitor)
}
}) 
您需要使用。另外,这是一个猜测,因为我不知道这里的数据结构,但您可能需要使用
Any
而不是
Where
,因为它返回一个布尔值,您可以将其用作条件:

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)
    }
列出结果=操作
.选择(ra=>new RiskDTO
{
CurrentControlled=ra.RiskActions.Any(m=>m.ActionCompleteDate==null))
?TerminologyFactor.Parse(“{Current}”,TerminologyFactor.RMMonitor)
:TerminologyFactor.Parse(“{Controlled}”,TerminologyFactor.RMMonitor)
}