如何在C#中根据条件设置<td>标签内值的显示颜色?
解决方案
你可以在字符串插值中嵌入三元条件运算符,根据字段值动态生成<td>标签的style属性,实现需求。具体修改如下:
修改后的完整代码
// 推荐用StringBuilder优化字符串拼接效率,数据量大时效果更明显 StringBuilder aa = new StringBuilder("<html> <style> table, th, td { border: 1px solid black; border-collapse: collapse; }</style><body> " + @" <table style='width: 100%'> <tr> <th>Engine</th> <th>Risk(Torque)</th> <th>Risk(Flow)</th> <th>Risk(Power)</th> </tr>"); foreach (var item in valuesRodBreak) { aa.Append($@" <tr> <td>{item.Engine}</td> <td{(item.Torque.Equals("low", StringComparison.OrdinalIgnoreCase) ? " style='background-color:green'" : "")}>{item.Torque}</td> <td{(item.Flow.Equals("low", StringComparison.OrdinalIgnoreCase) ? " style='background-color:green'" : "")}>{item.Flow}</td> <td{(item.Power.Equals("low", StringComparison.OrdinalIgnoreCase) ? " style='background-color:green'" : "")}>{item.Power}</td> </tr> "); } aa.Append(@"</table></body></html>");
关键逻辑说明
- 三元运算符
condition ? trueValue : falseValue会判断字段值是否为"low"(不区分大小写),满足条件则添加背景色样式,否则不添加 - 用
StringComparison.OrdinalIgnoreCase是为了兼容"Low"、"LOW"等不同大小写的输入,如果只需要严格匹配小写"low",可以改为item.Torque == "low" - 替换原有的字符串
+=为StringBuilder.Append,避免频繁创建新字符串对象,提升代码性能
内容的提问来源于stack exchange,提问作者emrebalci
相关产品推荐
相关产品推荐

