簡體   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