我下课
public class DataCls
{
public string Message { get; set; }
public string Priority { get; set; }
public string Key { get; set; }
}
在下面的代码中,我试图基于“消息”和“优先级”的值生成“密钥”。
如果“消息”和“优先级”为空,则值应为“ NA”。
下面的代码不起作用,并且字符串连接没有发生。怎么了
List<DataCls> lstData = new List<DataCls>
{
new DataCls {Message="M1", Priority=null, Key=null },
new DataCls {Message=null, Priority="P1", Key=null }
};
lstData.ForEach(a => a.Key = a.Message == null ? "NA" : a.Message + ":" + a.Priority == null ? "NA" : a.Priority);
最佳答案
方括号的帮助,最后它永远不会为null,因为它已被添加到静态字符串中,然后进行了比较。
lstData.ForEach(
a => a.Key = a.Message == null ? "NA" :
a.Message + ":" + (a.Priority == null ? "NA" : a.Priority));
但是这样更好
lstData.ForEach(
a => a.Key = a.Message == null ? "NA" : a.Message + ":" + (a.Priority ?? "NA"));
尽管您实际上可能真的打算是这样
lstData.ForEach(a => a.Key = $"{a.Message ?? "NA"}:{a.Priority ?? "NA"}");
关于c# - 空检查不适用于ForEach Linq,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39716533/