1

如果 list.Find() 返回 null.code 返回异常。有没有更好的方法来做到这一点。这是参考我之前的帖子。

链接: 尝试从列表对象传递列值时,Linq 查询返回 null

ProcessName = Process().Find(x => x.ProcessID == p.ProcessID).ProcessName ?? String.Empty;
4

2 回答 2

2

合并 Find 的结果。如果 Find 返回 null(即未找到您的 ProcessID),​​那么您将使用单个字符串属性 ProcessName 将 null 合并到匿名类型的对象。然后,您的 Process 对象或使用匿名类型的对象都将具有 ProcessName 属性,您可以在原始问题中的 LINQ 选择中使用它。

ProcessName = (Process().Find(x => x.ProcessID == p.ProcessID) ?? new { ProcessName = "<unknown>" }).ProcessName;
于 2013-10-25T16:47:44.230 回答
1

这是因为您试图.ProcessName在 .Find() 没有任何返回内容时访问:

尝试这个:

var matchingProcess = Process().Find(x => x.ProcessID == p.ProcessID);

ProcessName = matchingProcess ? matchingProcess.ProcessName : string.Empty;
于 2013-10-25T14:55:52.833 回答