我正在尝试将数据绑定(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/