Linq If list.Find()返回null.code返回异常
If list.Find()返回null.code返回异常。有没有更好的办法。这是关于我以前的帖子 链接:Linq If list.Find()返回null.code返回异常,linq,c#-4.0,c#-3.0,Linq,C# 4.0,C# 3.0,If list.Find()返回null.code返回异常。有没有更好的办法。这是关于我以前的帖子 链接: 这是因为当.Find()没有任何要返回的内容时,您正试图访问.ProcessName: 试试这个: var matchingProcess = Process().Find(x => x.ProcessID == p.ProcessID); ProcessName = matchingProcess ? matchingProcess.ProcessName : string.Em
这是因为当.Find()没有任何要返回的内容时,您正试图访问
.ProcessName
:
试试这个:
var matchingProcess = Process().Find(x => x.ProcessID == p.ProcessID);
ProcessName = matchingProcess ? matchingProcess.ProcessName : string.Empty;
合并Find的结果。如果Find返回null(即找不到您的ProcessID),那么您将使用单个字符串属性ProcessName将null合并到匿名类型的对象。然后,您的流程对象或使用匿名类型的对象都将具有ProcessName属性,并且您可以在LINQ中从原始问题中选择它
ProcessName = (Process().Find(x => x.ProcessID == p.ProcessID) ?? new { ProcessName = "<unknown>" }).ProcessName;
ProcessName=(Process().Find(x=>x.ProcessID==p.ProcessID)??新的{ProcessName=”“}).ProcessName;
我的解决方案解决了您的问题吗?没有,我不知道,因为它在一个查询语句中,它不适合我。完整的问题是在我的问题中提到的链接。对不起,我给了错误的链接。。。。。。。。。。!!!我已经更新了。@neo我的答案有用吗?
ProcessName = (Process().Find(x => x.ProcessID == p.ProcessID) ?? new { ProcessName = "<unknown>" }).ProcessName;