[英]How to resolve object reference error in lambda expression of linq in c#?
我正在研究 WPF 应用程序。 在其中我试图根据需要的条件从列表中获取记录。 但是当没有找到任何记录时,它会给我对象引用未找到错误。
var recordList = _outputVariables.ToList().Where(X => X.symbolName == _symbolName).ToList();
if (recordList != null)
{
//more coding...
}
所以如代码所示,当 _outputVariables 根据 _symbolName 没有任何记录匹配时,它会给出Object reference not set to an instance of an object.'
错误Object reference not set to an instance of an object.'
X was null.
. 那么我该如何处理这个问题呢? 请帮忙。
使用 C#6 中引入的空条件运算符(并且不要多次调用ToList()
):
var recordList = _outputVariables?.Where(X => X?.symbolName == _symbolName).ToList();
if (recordList != null)
{
//more coding...
}
你也可以像下面一样使用
if (_outputVariables != null && _outputVariables.Count > 0)
{
var recordList = _outputVariables.Where(X => X != null && !string.IsNullOrEmpty(X.symbolName) && X.symbolName == _symbolName);
}
var recordList = _outputVariables.ToList().Where(X => X.symbolName == _symbolName).ToList();
您当前循环遍历_outputVariables
,但如果它为null
则会出现错误,因为null
没有.ToList()
。 所以你应该添加一个?
在您的_outputVariables
,因此当它为空时它将返回null
而不是异常。
X
。 如果X
为null
并且您尝试获取属性symbolName
,则会出现错误,因为null
没有名为symbolName
的属性。 所以你想添加一个?
这里也。 所以它将返回null
而不是异常。
var recordList = _outputVariables?.ToList().Where(X => X?.symbolName == _symbolName).ToList();
你: var recordList = _outputVariables?.ToList().Where(X => X?.symbolName == _symbolName).ToList();
你可以试试这个
if(_outputVariables!=null)
{
var recordList = _outputVariables.Where(X => X.symbolName ==_symbolName).ToList();
}
if (recordList != null)
{
//more coding...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.