繁体   English   中英

Linq:如何为相应的布尔值选择某些文本“ True”或“ False”?

[英]Linq: how to select certain text “True” or “False” for corresponding boolean values?

以下查询用于获取flagchecked为布尔值的数据。

var reducedList = alarmlog.Select(e => 
new { 
    e.ID, 
    e.alarmname, 
    e.alarmmessage, 
    e.metername, 
    e.starttime, e.flagchecked 
}).ToList();

我正在使用reduceList将数据导出到excel。 Excel将布尔值显示为复选框。我想为相应的布尔值true / false输入文本“ True”或“ Done”。

您可以使用三元/条件运算符: ?:运算符

var reducedList = alarmlog.Select(e => new 
{ 
    e.ID, 
    e.alarmname, 
    e.alarmmessage, 
    e.metername, 
    e.starttime, 
    flagchecked = e.flagchecked ? "Done" : "Not Done" }).ToList();

条件运算符的工作方式如下: condition ? first_expression : second_expression; condition ? first_expression : second_expression;

这意味着: e.flagchecked ? "True" : "False"; e.flagchecked ? "True" : "False"; 的工作原理

private string ConvertTrueFalseString(bool value)
{
    if(value)
        return "True";
    else
        return "False";
}

var reducedList = alarmlog.Select(e => new 
{ 
    e.ID, 
    e.alarmname, 
    e.alarmmessage, 
    e.metername, 
    e.starttime, 
    flagchecked = ConvertTrueFalseString(e.flagchecked)).ToList();

因此,为此: e.flagchecked ? "Done" : "Not Done" e.flagchecked ? "Done" : "Not Done" 如果(e.flagchecked == true),则返回“完成” ;当(e.flagchecked == false),则返回“未完成”

您可以检查我上面发布的?:运算符链接。

var reducedList = alarmlog.Select(e => new {
    e.ID,
    e.alarmname,
    e.alarmmessage,
    e.metername,
    e.starttime,
    flagchecked = e.flagchecked ? "Done" : "Undone"
}).ToList();
reducedList.ForEach(x => x.flagchecked == "True" ? x.flagchecked = "Done" : x.flagchecked = "Undone");

您可以在实例化reducedList之后执行此reducedList

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM