如果list.Find()返回null.code返回异常。有没有更好的方法来做到这一点。这是参考我之前的帖子。
链接:Linq query returning null when trying to pass a column value from list object
ProcessName = Process().Find(x => x.ProcessID == p.ProcessID).ProcessName ?? String.Empty;
答案 0 :(得分:2)
合并Find的结果。如果Find返回null(即未找到ProcessID),那么您将使用单个字符串属性ProcessName将null合并到具有匿名类型的对象。然后,您的Process对象或使用匿名类型的对象都将具有ProcessName属性,您可以在原始问题的LINQ选择中使用它。
ProcessName = (Process().Find(x => x.ProcessID == p.ProcessID) ?? new { ProcessName = "<unknown>" }).ProcessName;
答案 1 :(得分:1)
这是因为你在.Find()没有任何东西要返回时试图访问.ProcessName
:
试试这个:
var matchingProcess = Process().Find(x => x.ProcessID == p.ProcessID);
ProcessName = matchingProcess ? matchingProcess.ProcessName : string.Empty;