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

本文关键字:文本 True False 选择 布尔值 Linq | 更新日期: 2023-09-27 17:57:00

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

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

我正在使用缩减列表将数据导出到 excel。Excel 将布尔值显示为复选框。我想为相应的布尔真/假提供文本"真"或"完成"。

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

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

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;

这意味着: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 == true)它返回"Done",当(e.flagchecked == false)它返回"Not Done"

您可以查看我上面发布的 ?: 操作员链接。

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后执行此操作。