Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq If list.Find()返回null.code返回异常_Linq_C# 4.0_C# 3.0 - Fatal编程技术网

Linq 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

If list.Find()返回null.code返回异常。有没有更好的办法。这是关于我以前的帖子

链接:


这是因为当.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;