如果list.Find()返回null.code返回异常

时间:2013-10-25 14:50:59

标签: linq c#-4.0 c#-3.0

如果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;

2 个答案:

答案 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;