如果 list.Find() 返回 null.code 返回异常。有没有更好的方法来做到这一点。这是参考我之前的帖子。
链接: 尝试从列表对象传递列值时,Linq 查询返回 null
ProcessName = Process().Find(x => x.ProcessID == p.ProcessID).ProcessName ?? String.Empty;
如果 list.Find() 返回 null.code 返回异常。有没有更好的方法来做到这一点。这是参考我之前的帖子。
链接: 尝试从列表对象传递列值时,Linq 查询返回 null
ProcessName = Process().Find(x => x.ProcessID == p.ProcessID).ProcessName ?? String.Empty;
合并 Find 的结果。如果 Find 返回 null(即未找到您的 ProcessID),那么您将使用单个字符串属性 ProcessName 将 null 合并到匿名类型的对象。然后,您的 Process 对象或使用匿名类型的对象都将具有 ProcessName 属性,您可以在原始问题中的 LINQ 选择中使用它。
ProcessName = (Process().Find(x => x.ProcessID == p.ProcessID) ?? new { ProcessName = "<unknown>" }).ProcessName;
这是因为您试图.ProcessName
在 .Find() 没有任何返回内容时访问:
尝试这个:
var matchingProcess = Process().Find(x => x.ProcessID == p.ProcessID);
ProcessName = matchingProcess ? matchingProcess.ProcessName : string.Empty;